假设我有一个名为table1的表,它的相应列是col1,col2,col3和col4。
将会做什么相同的事情:
-- note that the following query will not work
SELECT *
FROM table1
WHERE col1, col2 IN (SELECT col1, col2
FROM table1
WHERE col3 < 4)
我是否必须在我的数据库中合并col1和col2才能使其正常工作?如果我将col1和col2合并到col1_2中,那么我将能够通过编写以下内容来完成上述查询:
SELECT *
FROM table1
WHERE col1_2 IN (SELECT col1_2
FROM table1
WHERE col3 < 4)
使用一列时,IN子句正常工作。如果我可以在几个列中使用它而不必修改数据库,那将是很好的。
答案 0 :(得分:3)
SELECT * from table1 t1, table1 t2
where t1.col1=t2.col1 and t1.COl2=t2.Col2 and t1.col3<4
尝试这个
答案 1 :(得分:0)
您展示的内容相当于:
SELECT *
FROM table1 tb1
WHERE EXISTS
(
SELECT *
FROM table1 tb2
WHERE
tb1.col1 = tb2.col1 and
tb1.col2 = tb2.col2 and
tb2.col3 < 4
)
但是,这个查询没有多大意义,因为它等同于
SELECT *
FROM table1 tb1
WHERE tb2.col3 < 4
我只是假设你展示的例子没有经过深思熟虑。