Я пытался поставить под сомнение критерии продукта в таблице.Значения NAME и VAL находятся в разных строках.Я спрашиваю, равны ли записи ИМЯ = aa, bb, cc ,.и VAL = 10,20,30.Я переворачиваю результаты.Я думаю, что SQL-запрос работает правильно.Мне удалось исправить запрос столбцов с помощью следующего метода.
Но я думаю, что это неправильно для производительности.Является ли этот SQL-запрос правильным с точки зрения производительности?Если нет, можете ли вы привести пример правильного запроса SQL?Спасибо за вашу помощь.
test table:
Id PID NAME VAL
1 1 aa 10
2 1 bb 20
3 1 cc 30
4 2 aa 10
5 2 bb 20
6 2 cc 30
7 3 aa 10
8 3 bb 20
9 3 cc 999
Query:
SELECT PID from test WHERE
PID IN (SELECT PID FROM test WHERE NAME='aa' and VAL='10')
AND
PID IN (SELECT PID FROM test WHERE NAME='bb' and VAL='20')
AND
PID IN (SELECT PID FROM test WHERE NAME='cc' and VAL='30')
GROUP BY (PID)
Result:
1
2
Я подумываю использовать его с такими (<> =) операторами.Это был конечный результат.Я хочу, чтобы вы прокомментировали, если это правда.
SELECT t.pid from test t
WHERE
(t.name = 'aa' and t.val = 10)
OR
(t.name = 'bb' and t.val = 20)
OR
(t.name = 'cc' and t.val > 30)
GROUP BY t.pid
HAVING count(t.pid) = 3;