繁体   English   中英

行是否存在另一个表?

[英]Does row exist is another table?


file_logs

  • FILE_ID
  • 用户身份

  • ID
  • 名称
  • 等...

published_ratings

  • AUTHOR_ID
  • FILE_ID
  • 评论
  • 等...

脚本


我正在创建一个下载日志,并且需要显示用户已对哪些文件进行分级以及未分级的文件,这必须通过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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM