【发布时间】:2013-03-08 16:43:43
【问题描述】:
我正在尝试从 SQL Server 数据库(使用 SQL Server Management Studio)中提取一些信息,如下所示:
SELECT DISTINCT( t1.accountid ),
t1.accountname,
t1.reseller,
(SELECT t1.reseller
FROM dbname t1
INNER JOIN dbname t2
ON t1.reseller = t2.reseller
WHERE t1.reseller IN ( 1 )) AS Reseller
FROM dbname t1,
dbname t2
运行它会给我一个错误:
子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。
经过大量研究,我仍然感到困惑。帮助将不胜感激。谢谢。
【问题讨论】:
-
Bad habits to kick : using old-style JOINs - ANSI-92 SQL 标准 ( 20 年前!)
-
如果经销商在两个表中都匹配,那么输出两次有什么意义?另外,您为什么要在子查询中显式加入,然后在外部查询中再次但隐式(this is bad!)?
-
另外,自加入的意义何在?你能展示几行样本数据和想要的结果吗?我开始制定答案,但您最初的尝试有很多错误,以至于无法确定该查询实际上应该做什么。
标签: sql sql-server inner-join