此表是" program_participants"
此表是" logsesion"
我的查询
SELECT a.`id_participant` FROM `program_participants` a
INNER JOIN `logsesion` b
on a.`id_participant` != b.`user_id`
GROUP BY a.`id_participant`
现在运行上面的查询后,我得到了一个。id_participant
(1到9表示来自参与者表的所有内容)但我希望除了1和2之外的所有内容,因为它们出现在logsesion表中。你能告诉我我做错了吗?我花了这么多时间在这上面,这似乎是直截了当的。我也试过了符号<>同样。
答案 0 :(得分:1)
您需要left join
,然后进行比较以过滤掉匹配的记录。剩下的那些没有匹配:
SELECT pa.`id_participant`
FROM `program_participants` pa LEFT JOIN
`logsesion` ls
ON pa.`id_participant` = ls.`user_id`
WHERE ls.user_id is null;
答案 1 :(得分:0)
我不确定,但这样的事情应该有效:
SELECT a.`id_participant` FROM `program_participants` a
LEFT JOIN `logsesion` b
ON a.`id_participant` = b.`user_id`
GROUP BY a.`id_participant`
HAVING b.`user_id` IS NULL
答案 2 :(得分:0)
如果你真的想加入这些表,你可以尝试这一点,这将使这些表的笛卡尔积产品过滤已经在logsesion表中的用户ID。如果您想要不同的结果评论如下:
SELECT pa.`id_participant`
FROM `program_participants` pa JOIN
`logsesion` ls
WHERE pa.`id_participant` NOT IN
(
SELECT user_id from `logsesion`
);