2014-09-05 2 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 в конце запроса, чтобы избежать дублирования, отсутствующего в исходном запросе. Или просто SELECT DISTINCT. – PawelP

+0

@PawelP Я не решался добавить предложение GROUP BY при написании запроса, и я решил оставить ту же логику, что и исходная. Но вы правы, лучше предоставить решение, которое позволит избежать дубликатов. –

+0

Хорошо, это ваш ответ в конце. Логика не совсем то же самое, потому что вы получите больше строк, возвращенных, чем запрос oOP (когда в одном из предложений IN обнаружено несколько одинаковых значений, оно не будет увеличивать количество результатов, но для JOIN это будет, поскольку каждый раз, когда вы найдите совпадение, в которое вы присоединитесь. Тем не менее, GROUP BY (или select distinct) будет давать меньше (или равных) строк, чем запрос OP. Я предполагаю, что с предоставленной нами информацией OP сможет точно настроить запрос по своему вкусу . OP: единственный способ, которым эти запросы будут отличаться, - это количество дубликатов. – PawelP

Смежные вопросы