我正在尝试从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。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。
经过大量研究后,我仍然感到难过。非常感谢帮助。感谢。
答案 0 :(得分:3)
DISTINCT
应用于单个列,除非您的表允许所有这些列中包含重复值,否则我不确定是否需要此列。t1.reseller
两次...即使您使用t1
和t2
中的一个,因为它们在连接上匹配,对于每一行,它们总是一样的!DISTINCT
?似乎所有你需要的是:
SELECT accountid, accountname, reseller
FROM dbo.dbname
WHERE reseller = 1;
否则请准确描述您的查询应该做什么(通过显示示例数据和所需结果)。
答案 1 :(得分:0)
在子查询中添加TOP 1子句
如下
(SELECT TOP 1 t1.reseller
FROM dbname t1
INNER JOIN dbname t2
ON t1.reseller = t2.reseller
WHERE t1.reseller IN ( 1 )) AS Reseller)
答案 2 :(得分:-1)
您收到的错误是因为此查询:
(SELECT t1.reseller
FROM dbname t1
INNER JOIN dbname t2
ON t1.reseller = t2.reseller
WHERE t1.reseller IN ( 1 )) AS Reseller)
返回多个值。