日期:2014-05-20  浏览次数:20924 次

【关于SQL中的子查询】在线等....有那个好心人帮我看看这个语句啊??
这是我写的一段 SQL语句 : 目的使用子查询 查询信息 ,可是老报错 ,不知道 这个子查询该怎么用啊??又那个好心人帮我看看啊??

--<2>使用子查询实现
SELECT(
  --这里返回多个结果
SELECT DName FROM hos_district WHERE DID IN(
SELECT SDID FROM hos_street WHERE SID IN(
SELECT SID FROM hos_house WHERE UID=(
SELECT UID FROM sys_user WHERE UName='小李'
)


) 区县,(
SELECT SName FROM hos_street WHERE SID IN(
SELECT SID FROM hos_house WHERE UID=(
SELECT UID FROM sys_user WHERE UName='小李'
)
)
) 街道,HTID 户型,PRICE 价格,TOPIC 标题,CONTENTS 描述,HTIME 时间,COPY 备注
FROM hos_house
WHERE UID=(
SELECT UID FROM sys_user WHERE UName='小李'
)

错误类型:

  消息 512,级别 16,状态 1,第 3 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。

有谁知道我这个子查询应该怎么改啊 啊?? 在线等。。。。

------解决方案--------------------
WHERE UID=( 这个=号改成IN 试试
------解决方案--------------------
同楼上,应该是 WHERE UID=(这里面返回的结果数不只一条),改成 where uid in (....)

看起来这个SQL可以优化一下
------解决方案--------------------
探讨

同楼上,应该是 WHERE UID=(这里面返回的结果数不只一条),改成 where uid in (....)

看起来这个SQL可以优化一下