我有两张表,一张是论文,一张是尝试。我想要做的是显示论文列表以及特定候选人对每篇论文所做的尝试
查询是
SELECT
p . * ,
GROUP_CONCAT( a.attempt_id ORDER BY a.date_time DESC ) AS ATT_ID
FROM papers AS p
LEFT JOIN attempts AS a ON p.prod_id = a.paper_id
WHERE (a.user_id =15 OR a.user_id IS NULL)
GROUP BY p.prod_id
该查询部分地工作,它将显示客户端未尝试过的所有论文,但如果客户端尚未尝试但另一个已尝试过,则不会显示该论文,因此如果论文 2 的尝试在attempts 表,另一个客户端的用户 id 15 尚未尝试论文 2,则论文 2 不会出现在列表中...
提前致谢。
最佳答案
当没有记录时,外部联接仍然会为您提供记录。然而,对于纸张 2,没有任何外连接,因为找到了一条记录(针对用户 14)。稍后,在 WHERE 子句中,您删除该记录,因为您说您只想保留用户 15 或 null。
将条件移至 ON 子句以使其按需要工作。
SELECT
p . * ,
GROUP_CONCAT( a.attempt_id ORDER BY a.date_time DESC ) AS ATT_ID
FROM papers AS p
LEFT JOIN attempts AS a ON p.prod_id = a.paper_id and a.user_id = 15
GROUP BY p.prod_id
关于mysql 连接查询 - QUERY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31201107/