2014-09-05 70 views

回答

0

这里是相同的查询,但我通过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 

希望这会有所帮助。

+1

在查询结尾添加GROUP BY T1.column1以避免原始查询不具有的重复项。或者只是选择DISTINCT。 – PawelP 2014-09-05 05:56:25

+0

@PawelP在写查询时我犹豫加了一个'GROUP BY'子句,我决定保持原来的逻辑。但是你是对的,最好提供一个避免重复的解决方案。 – 2014-09-05 06:02:52

+0

好吧,这是你的答案。逻辑不完全相同,因为您将得到比oOP查询更多的行(当在IN子句中找到多个相同的值时,它不会增加结果的数量,但对于JOIN它将会发生,因为每次找到一个你会加入的匹配,然而,GROUP BY(或者select distinct)会比OP的查询给出更少(或者相等)的行,我想用我们提供的信息,OP能够根据他的喜好微调查询。对于OP:这些查询的唯一方式是重复的次数。 – PawelP 2014-09-05 06:08:36