Digamos que tengo una tabla llamada table1 y sus columnas correspondientes son col1, col2, col3 y col4, por ejemplo.
lo que será lo equivalente a hacer:
-- note that the following query will not work SELECT * FROM table1 WHERE col1, col2 IN (SELECT col1, col2 FROM table1 WHERE col3 < 4)
¿Debo fusionar col1 y col2 en mi database para que esto funcione? Si combino col1 y col2 en col1_2, podré hacer que la consulta anterior funcione escribiendo:
SELECT * FROM table1 WHERE col1_2 IN (SELECT col1_2 FROM table1 WHERE col3 < 4)
La cláusula IN funciona bien cuando se usa una columna. Sería bueno si pudiera usarlo con varias columnas sin tener que modificar la database.
SELECT * from table1 t1, table1 t2 where t1.col1=t2.col1 and t1.COl2=t2.Col2 and t1.col3<4
testing este
Equivalente a lo que mostró es:
SELECT * FROM table1 tb1 WHERE EXISTS ( SELECT * FROM table1 tb2 WHERE tb1.col1 = tb2.col1 and tb1.col2 = tb2.col2 and tb2.col3 < 4 )
Sin embargo, esta consulta no tiene mucho sentido ya que es equivalente a
SELECT * FROM table1 tb1 WHERE tb2.col3 < 4
Solo asumo que el ejemplo que muestra no está bien pensado.