【发布时间】:2022-01-16 22:39:20
【问题描述】:
我有问题。我试图让所有作者都只有一篇文章。它工作得很好,但是,它向我显示了完全相同的输出 3 倍。
查询:
select a.name as 'Name', a.surname as 'Surname' from author as a inner join post as p on (select count(body) from post where authorID = a.ID) = 1;
【问题讨论】:
-
请避免发布images 的数据或查询。在您的问题中包含数据作为文本,请参阅 How to ask 和 Minimal, Reproducible Example
-
inner join post as p但on子句与p完全无关,看起来像EXISTS子查询或使用GROUP BY ... HAVING COUNT(*) = 1可能是更好的选择。 -
旁注:不要习惯使用单引号作为标识符,例如列别名。是的,遗憾的是 MySQL 接受了这一点,但在 SQL 中,单引号通常用于字符串(或日期......)文字。如果您曾经使用过另一个 DBMS(或者未来的 MySQL 版本对此更加清醒),您可能会收到错误消息。对包含特殊字符或区分大小写的标识符使用反引号,或者最好根本不使用特殊字符和区分大小写的标识符。标识符不需要是“漂亮”、“漂亮”的标头等,这是表示层的工作。