簡體   English   中英

如何在MySQL中實現此查詢?

[英]How to implement this query in MySQL?

我的查詢與此非常相似。

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

由於MySQL不支持相交,因此我必須找到正確的解決方案。

這應該做的工作:

SELECT p.emailid
FROM usereducation e JOIN userprofession p ON p.emailid = e.emailid
WHERE e.presfuncarea = '$funcarea'
AND p.totexpyear >= '$minexp'

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'
    )

來自: 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM