我必须使用表:USERS
和DATA
。来自user
的每个USERS
可以在rows
上有一个,多个DATA
,但也可以有。{/ p>
我还希望users
选择USERS
而DATA
没有对应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}}。
答案 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