Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MySQL中实现这个查询?_Mysql_Database - Fatal编程技术网

如何在MySQL中实现这个查询?

如何在MySQL中实现这个查询?,mysql,database,Mysql,Database,我的问题与此非常相似 (SELECT emailid FROM usereducation WHERE presfuncarea = '$funcarea') intersect (SELECT emailid FROM userprofession WHERE totexpyear >= '$minexp') 由于MySQL不支持intersect,我必须找到正确的解决方案 存在MySQL支持。这应该起作用: SELECT UE.emailid FROM usereducation

我的问题与此非常相似

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

由于MySQL不支持intersect,我必须找到正确的解决方案

存在MySQL支持。这应该起作用:

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'
    )
发件人:

INTERSECT只是一个内部联接,我们将一个表的元组与另一个表的元组进行比较,然后选择出现在这两个表中的元组,同时剔除重复的元组。所以

可以简单地重写为

SELECT a.member_id, a.name
FROM a INNER JOIN b
USING (member_id, name)

这应该可以做到:

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