2013-11-12 4 views
-3

У меня есть таблица Pruza в моей базе данных и ситуации в этой таблице, например:Выберите запрос (одна таблица)

SifVU  Name 
1   Test1 
2   Test2 
1   Test3 
2   Test3 

Как сделать Выберите запрос, который возвращает только TEST3 в результате, потому что только Test3 оба Сив (1 и 2).

ответ

1

попробовать это, он показывает только имена, которые имеют SifVU 1 и 2:

select one.name 
from (select name from Pruza where SifVU = 1) one 
join (select name from Pruza where SifVU = 2) two 
on (one.name = two.name) 
1
SELECT Name 
FROM Pruza 
WHERE SifVU in (1,2) 
GROUP BY Name 
HAVING COUNT(DISTINCT SifVU) = 2 

См fiddle.

0

Это может быть использовано для любого числа типов TEST3 записей и нет необходимости какого-либо жесткого кодирования

SELECT B.NAME 
FROM 
(SELECT COUNT(SifVU) AS CNT_SifVU FROM TABLE GROUP BY SifVU) AS A 
INNER JOIN 
(
SELECT COUNT(*) AS DISTINCT_SIFVU, NAME 
FROM 
(SELECT DISTINCT SifVU, Name FROM TABLE) AS B 
) AS C 
ON B.DISTINCT_SIFVU = A.CNT_SifVU 
Смежные вопросы