我遇到了“不是按表达式分组”错误。
我需要寻找类似的标题,媒介和描述。
艺术家表由Artistid、Artist姓氏和Artist名字组成。
工作表由workid、title、medium、description、artistid组成
艺术是唯一的钥匙。
列出在数据库中记录了多个副本的任何艺术品的详细信息。
SELECT W.workid, W.title, W.medium, W.description, W.artistid, A.FirstName, A.LastName
FROM dtoohey.work W, dtoohey.artist A
GROUP BY W.artistid, A.FirstName, A.LastName
having count(*) > 1;
最佳答案
似乎你的桌子之间没有合适的连接(我建议你这样做)。你应该做正确的一个)
如果您希望在w.artistiid上分组(别名为每个艺术家的工作ID计数),则在选择中不能有w.workid、w.title、w.medium
SELECT W.artistid, A.FirstName, A.LastName
FROM dtoohey.work W
INNER JOIN dtoohey.artist A ON A.artistid = W.artistid
GROUP BY W.artistid, A.FirstName, A.LastName
having count(*) > 1;
否则,如果要检查select是否返回列select的多行,则必须将所有列添加到group by子句中
SELECT W.workid, W.title, W.medium, W.description, W.artistid, A.FirstName, A.LastName
FROM dtoohey.work W
INNER JOIN dtoohey.artist A ON A.artistid = W.artistid
GROUP BY W.workid, W.title, W.medium, W.description, W.artistid, A.FirstName, A.LastName
having count(*) > 1;