带有JOIN的SQL SELECT也记录第二个表上没有对应关系

时间:2013-09-26 13:22:11

标签: mysql

我必须使用表:USERSDATA。来自user的每个USERS可以在rows上有一个,多个DATA,但也可以有。{/ p>

我还希望users选择USERSDATA没有对应SELECT USERS.id, USERS.email, USERS.active, USERS.last_alert, DATA.active, DATA.active_from FROM USERS JOIN DATA WHERE DATA.id_user = USERS.id AND DATA.active = 1 ORDER BY USERS.id ASC ,但以下查询会省略它们。我应该如何修改它?

DATA.id_user

USERS.id包含{{1}}。

3 个答案:

答案 0 :(得分:3)

您应该使用LEFT JOIN而不是INNER JOIN

SELECT
    USERS.id,
    USERS.email,
    USERS.active,
    USERS.last_alert,
    DATA.active,
    DATA.active_from
FROM USERS
    LEFT JOIN DATA ON (
        DATA.id_user = USERS.id AND DATA.active = 1
    )
ORDER BY USERS.id ASC

答案 1 :(得分:0)

外部加入

SELECT USERS.id,
       USERS.email,
       USERS.active,
       USERS.last_alert,
       DATA.active,
       DATA.active_from
FROM DATA
LEFT OUTER JOIN USERS
WHERE DATA.id_user = USERS.id
    AND DATA.active = 1
ORDER BY USERS.id ASC

答案 2 :(得分:0)

将其重写为LEFT JOIN应包含这些行,但不可用的值将变为NULL然后

SELECT USERS.id,
       USERS.email,
       USERS.active,
       USERS.last_alert,
       DATA.active,
       DATA.active_from
FROM USERS
LEFT JOIN DATA ON USERS.id = DATA.id_user AND DATA.active = 1
ORDER BY USERS.id ASC
相关问题