【问题标题】:Select return more value than one to main select选择向主选择返回多于一的值
【发布时间】:2013-10-03 17:32:42
【问题描述】:

你能帮帮我吗?我有一个主 (SELECT),我在其中使用了更多的下一个选择命令,但劣质选择返回的值比一个多。

SELECT table1.column1 
AS table.refer, table2.column2 AS table.value,
    --Here is my problem:
    (select count(table.column.id) FROM table1 
    left outer join table1 on table1.column1 = table.column 
    LEFT outer join table2 on table2.column2 = table1.column1
    LEFT OUTER JOIN table3 on table3.column3 = table2.column2
    WHERE table1.column1 = (23212 " This value contains more data) AND table2.column2 = value AND YEAR(table1.column1) = YEAR(GETDATE() GROUP BY table.refer)

FROM table1 left outer join table1 on table1.column1 = table.column 
LEFT outer join table2 on table2.column2 = table1.column1
LEFT OUTER JOIN table3 on table3.column3 = table2.column2

WHERE table1.name1 in (23210, 23211, 23212, 4882525, 67735166, 74605160) AND table2.name2 in (15739, 15744, 15743, 15741, 15735, 15745)    
GROUP BY table.refer, table.value

主选择的重要值是 table.refer。我只需要一张桌子。请参阅第二次选择。但是对于所有数据。

我为此检查光标功能或为此选择数据或字段[]创建新表,但我不知道该怎么做。请帮帮我。

【问题讨论】:

  • SQL 只是 结构化查询语言 - 许多数据库系统使用的语言,但不是数据库产品...很多事情都是特定于供应商的 - 所以我们真的需要知道您正在使用什么数据库系统(以及哪个版本)(请相应地更新标签)......

标签: sql group-by cursor field where


【解决方案1】:

所以,问题的一部分是您有一个 Group By int 子查询(“劣质选择”)。这将允许选择有单列(count(table.column.id))但多行该列,每个表一个。请参考。如果您考虑一下,您要求子选择的结果是更高选择中的一个字段。因此它只能返回一个值。

所以我认为您可能只想删除 Group By。这将为子查询返回单个 Count 结果。

如果这不是您想要的,但需要多个值,那么作为字段的子查询将不是可行的方法,需要更好地描述您想要实现的目标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 2017-07-10
    • 1970-01-01
    • 2012-12-12
    相关资源
    最近更新 更多