内部联接与COUNT()和GROUP BY

时间:2016-04-20 00:16:38

标签: mysql join

我正在使用phpMyAdmin来测试此查询,但不断收到语法错误。我试过在MySql手册中查找它并尝试其他语法可能性,但我在这个过程中变老了。谢谢你的帮助

SELECT image_title,image_id,COUNT(other_sales。*)FROM art INNER JOIN other_sales ON(art.image_id = other_sales.image_id) GROUP BY(other_sales.image_id);

MySQL说:文档

文档

1052 - 字段列表中的列'image_id'不明确

最终,我想计算'other_sales'表中特定数字(image_id)出现的次数

3 个答案:

答案 0 :(得分:1)

要解决这些1064错误:

错误消息提供了您的查询片段。片段的第一个字符是MySQL解释器无法理解的第一个字符。

因此,对于您的查询,它是

SELECT image_title, image_id, COUNT(other_sales.*) FROM art INNER JOIN ...
ggggggggggggggggggggggggggggggggggggggggggggggggbbbbbbbbbbbbbbbbbbbbbbbbbbb

其中g表示良好,b表示不好。

您的实际问题:您不能在COUNT()函数中放置多个值。你试图把COUNT(something.*)放在没有意义的地方。

请注意COUNT(*)是一个特殊情况,意味着只计算行数。

答案 1 :(得分:1)

artother sales可能都有列image_id。 在列之前指定表art.imageid,或者将表别名作为表,然后指向列,如此

SELECT o.image_title, o.image_id, COUNT(*)
FROM art a JOIN other_sales o ON (art.id=other_sales.image_id) 
GROUP BY (o.image_id)

答案 2 :(得分:0)

是的,我现在看到了。我的原始代码有2个问题。

  1. 我应该选择特定的列名而不是使用*

  2. image_id是一个列名,出现在我正在访问的两个表中。这将导致“模棱两可”的错误。

  3. 以下是原始代码和更正后的代码:

    原: SELECT image_title,image_id,COUNT(other_sales。*)FROM art INNER JOIN other_sales ON(art.image_id = other_sales.image_id)GROUP BY(other_sales.image_id);

    校正: SELECT image_title,art.image_id,COUNT(other_sales.image_id)FROM art INNER JOIN other_sales ON(art.image_id = other_sales.image_id)GROUP BY(other_sales.image_id);

    感谢您的帮助

相关问题