【发布时间】:2011-06-15 02:41:34
【问题描述】:
假设我有一个名为 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 子句可以正常工作。如果我可以将它与多个列一起使用而无需修改数据库,那就太好了。
【问题讨论】:
-
也许来晚了,但和
SELECT * FROM table1 WHERE col3 < col4不一样吗? -
不,不完全一样。想象一下两行的简单情况,它们具有相同的 col1、col2 值,但 row1 的 col3 col4。在所需的情况下,将返回两行。