MySQL запрос, который соответствует двум полям и имеет другое общее поле - PullRequest
2 голосов
/ 17 октября 2011

У меня есть таблица SQL, подобная этой:

id |  f1 | f2
 1 |  a  | hi
 2 |  a  | sup
 3 |  b  | hi

Мне нужен запрос, который захватывает строки, где f2 = hi ИЛИ f2 = sup, но только если f1 имеет одинаковое значение в обеих строках.Так что мой запрос будет захватывать идентификатор 1 и идентификатор 2, но НЕ 3

Так что в основном это -

SELECT * FROM `table` WHERE (`f2` = 'hi' OR `f2` = 'sup') AND 'f1-is-the-same'

Ответы [ 3 ]

2 голосов
/ 17 октября 2011
SELECT *
    FROM YourTable t1
        INNER JOIN YourTable t2
            ON t1.f1 = t2.f1
    WHERE t1.f2 = 'hi'
        AND t2.f2 = 'sup'
1 голос
/ 17 октября 2011
SELECT * FROM `table` as t1 
WHERE (`f2` = 'hi' OR `f2` = 'sup') 
  AND f1 in (select f1 from `table` where id <> t1.id)
0 голосов
/ 17 октября 2011

Такой запрос должен сработать

SELECT T1.id,T1.F1,T2.F2
FROM Table as T1
INNER JOIN Table as T2 
ON T1.F1=T2.F1 AND T1.ID <> T2.ID
WHERE T1.F2= 'hi' or T1.F1='sup'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...