Как реализовать этот запрос в MySQL? - PullRequest
2 голосов
/ 02 февраля 2011

Мой запрос очень похож на этот.

(SELECT emailid FROM usereducation WHERE presfuncarea = '$funcarea') 
intersect
(SELECT emailid FROM userprofession WHERE totexpyear >= '$minexp')

Так как MySQL не поддерживает пересечение, я должен найти правильное решение.

Ответы [ 3 ]

1 голос
/ 02 февраля 2011

Это должно сделать работу:

SELECT p.emailid
FROM usereducation e JOIN userprofession p ON p.emailid = e.emailid
WHERE e.presfuncarea = '$funcarea'
AND p.totexpyear >= '$minexp'
0 голосов
/ 02 февраля 2011

От: http://www.bitbybit.dk/carsten/blog/?p=71

INTERSECT - это просто внутреннее объединение, в котором мы сравниваем кортежи одной таблицы с кортежами другой таблицы и выбираем те, которые появляются в обеих таблицах при удалении дубликатов. Так

SELECT member_id, name FROM a
INTERSECT
SELECT member_id, name FROM b

можно просто переписать на

SELECT a.member_id, a.name
FROM a INNER JOIN b
USING (member_id, name)
0 голосов
/ 02 февраля 2011

MySQL поддерживает EXISTS. Это должно работать:

SELECT UE.emailid
FROM usereducation AS UE
WHERE UE.presfuncarea = '$funcarea'
  AND NOT EXISTS
    (
    SELECT * FROM userprofession AS UP
    WHERE UE.emailid = UP.emailID AND UP.totexpyear >= '$minexp'
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...