0
我觉得应该是写这一个简单的方法,因为这两个SELECT语句从同一个表拉:可以简化此嵌套选择SQL查询吗?
SELECT column1
FROM table1
WHERE column2 = 'VIRTUAL'
AND column3 IN
(SELECT column3
FROM table1
WHERE column1 = 'ELEC-035A');
我觉得应该是写这一个简单的方法,因为这两个SELECT语句从同一个表拉:可以简化此嵌套选择SQL查询吗?
SELECT column1
FROM table1
WHERE column2 = 'VIRTUAL'
AND column3 IN
(SELECT column3
FROM table1
WHERE column1 = 'ELEC-035A');
这里是相同的查询,但我通过INNER JOIN
条款替换子查询:
SELECT T1.column1
FROM table1 T1
INNER JOIN table1 T2 ON T2.column3 = T1.column3
AND T2.column1 = 'ELEC-035A'
WHERE T1.column2 = 'VIRTUAL'
GROUP BY T1.column1
希望这会有所帮助。
在查询结尾添加GROUP BY T1.column1以避免原始查询不具有的重复项。或者只是选择DISTINCT。 – PawelP 2014-09-05 05:56:25
@PawelP在写查询时我犹豫加了一个'GROUP BY'子句,我决定保持原来的逻辑。但是你是对的,最好提供一个避免重复的解决方案。 – 2014-09-05 06:02:52
好吧,这是你的答案。逻辑不完全相同,因为您将得到比oOP查询更多的行(当在IN子句中找到多个相同的值时,它不会增加结果的数量,但对于JOIN它将会发生,因为每次找到一个你会加入的匹配,然而,GROUP BY(或者select distinct)会比OP的查询给出更少(或者相等)的行,我想用我们提供的信息,OP能够根据他的喜好微调查询。对于OP:这些查询的唯一方式是重复的次数。 – PawelP 2014-09-05 06:08:36