分组IN语句sql

时间:2011-06-15 02:41:35

标签: sql sqlite

假设我有一个名为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子句正常工作。如果我可以在几个列中使用它而不必修改数据库,那将是很好的。

2 个答案:

答案 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

我只是假设你展示的例子没有经过深思熟虑。