【问题标题】:Operand should contain 1 column(s)操作数应包含 1 列
【发布时间】:2015-03-15 22:05:33
【问题描述】:

所以我正在尝试编写如下 SQL 语句...

我需要查找艺术家姓名列表,他们拥有的 CD 数量 生产的,以及他们的 CD 的平均价格。只返回结果 适合拥有不止一张 CD 的艺术家。

问题是每次我认为我得到它时,我都会收到错误消息“操作数应包含 1 列”,我觉得我现在的密度非常高,但如果有人能提供帮助,我将不胜感激.

这是我上次尝试的代码..

SELECT Artist.artID, CD.cdPrice, Count(*)
FROM CD
INNER JOIN Artist
ON Artist.artID=(SELECT CD.artID, AVG(CD.cdPrice), COUNT(*)
                 as Count FROM CD GROUP BY CD.artID HAVING Count > 1)

【问题讨论】:

    标签: php sql admin operand


    【解决方案1】:

    您的联接在右侧有三列 所以你可以使用类似的东西

    SELECT Artist.artID, CD.cdPrice, Count(*)
    FROM CD
    INNER JOIN Artist
    ON Artist.artID=(SELECT CD.artID
                     FROM CD 
                     GROUP BY CD.artID 
                     HAVING Count(*) > 1)
    Group by Artist.artID, CD.cdPrice
    

    替代

    SELECT Artist.artID, CD.cdPrice, Count(*)
    FROM CD
    INNER JOIN Artist
    ON Artist.artID=CD.artID
    Group by Artist.artID, CD.cdPrice
    

    替代方案 2

    SELECT Artist.artID, AVG(CD.cdPrice), Count(*)
    FROM CD
    INNER JOIN Artist
    ON Artist.artID=CD.artID
    Group by Artist.artID
    Having count(*) >1
    

    【讨论】:

    • 那还是不行?返回错误“#1242 - 子查询返回多于 1 行”
    • 我只是指出错误的根源,请查看替代方案并告诉我为什么这不起作用。
    • 可以选择另一种,它消除了我认为返回平均价格和艺术家制作的 CD 数量的能力。每当我尝试再次添加这些原始错误时,就会再次出现原始错误,有些艺术家制作了超过 1 张 CD,我需要计算这些 CD,所以它只读取艺术家的姓名和 CD 的数量,然后我只需要返回那些只制作了超过 1 张 CD 的艺术家。我发现使用替代方法,当我尝试添加这些参数时,它只是返回到原始错误。
    • 是的!非常感谢你!我没有意识到你是怎么做到的,非常感谢!
    【解决方案2】:

    你说WHERE artID= three columns这就是问题

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-26
      相关资源
      最近更新 更多