为什么MySQL在查询中不识别INTERSECT

时间:2014-10-31 10:49:13

标签: php mysql

我尝试使用INTERSECT子句进行查询,但PHPmyAdmin无法识别INTERSECT,这是错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INTERSECT (SELECT users.name, users.id, users.email FROM users ' at line 10

我无法理解,我也没有发现这样的问题。那么有什么解决方案吗感谢

SELECT  users.name, users.id, users.email

        FROM users
        WHERE users.id NOT IN (
    SELECT users.id
    FROM users
    JOIN clubs_messages ON users.id = clubs_messages.id_user
    GROUP BY clubs_messages.id_user)

    INTERSECT

    SELECT  users.name, users.id, users.email
        FROM users
        WHERE users.id NOT IN (
    SELECT users.id
    FROM users
    JOIN sessions_messages ON users.id = sessions_messages.id_user
    GROUP BY sessions_messages.id_user)

2 个答案:

答案 0 :(得分:0)

intersect不是mysql函数。这与phpmyadmin没什么关系,因为它返回的错误在这种情况下是正确的。

快速谷歌会帮助您重写代码:

来自a random blog

  

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

     

可以简单地重写为

     

选择a.member_id,a.name
     从内部加入b
     使用(member_id,name)

答案 1 :(得分:0)

INTERSECT是标准SQL的一部分,但MySQL不支持该操作。 SQL的许多部分对于供应商来说是可选的。没有SQL的实现支持该语言的每个部分。

过去曾要求支持INTERSECT:https://bugs.mysql.com/bug.php?id=31336

您可以登录bugs.mysql.com并点击该问题的“影响我”按钮,他们可以将其用作该功能需求的指示。