[英]Does row exist is another table?
file_logs
档
published_ratings
我正在创建一个下载日志,并且需要显示用户已对哪些文件进行分级以及未分级的文件,这必须通过1个查询来完成。
我已经对此有所了解,
SELECT
files.*,
IF(file_logs.user_id = published_file_ratings.author_id, TRUE, FALSE) AS rated
FROM file_logs
JOIN files
ON file_logs.file_id = files.id
LEFT JOIN published_file_ratings
ON file_logs.file_id = published_file_ratings.file_id
WHERE file_logs.user_id = 8
GROUP BY id
该查询的问题在于,如果首先出现错误的用户,则结果将是错误的。
结果应为用户已下载的所有文件的数组,并在“已评分”列中描述用户是否对文件进行了评分。
任何帮助都非常感谢。
您需要在您的JOIN子句中添加AND file_logs.user_id = published_file_ratings.author_id
您还可以将IF语句更改为IF(ISNULL(published_file_ratings.author_id), FALSE, TRUE)
此外,您现在可以删除GROUP BY以隐藏多个用户。 以这种方式在此处使用不正确。
您无法执行“按ID分组”,然后选择其余的列。 这没有道理。 如果您尝试选择不在分组依据中或包含在诸如SUM(ColName)之类的聚合语句中的列,则MySQL以外的任何其他DB都会引发错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.