问题如下:现在两个表,表A和表BA表如下:
PKID sendname sendcontent
1 aaa fjsdfjf
2 ddd fdsafas
3 ccc fdjskkjf
4 fje fdskjffB表如下:
PKID answername answercontent
1 ddd fdjksffsd
1 eee fjdksfksdj
1 tt2 fjkdjkfj
3 ddd jfdjjeii
3 tt2 fjsjijwf其中sendname和answername都是用户名
我是在做一个小论谈,A表是主题表(也就是问题表),B表是回复表,我想用一条SQL语句查出所有ddd用户参与过的主题的A表的记录(不需要返回B表的记录),我是这么写的
SELECT * FROM A WHERE sendname='ddd' OR PKID=(SELECT PKID FROM B WHERE answername='ddd')
这样查报错,"子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的"。各位大哥,请问我想实现这样的查询用一条SQL语句应该怎么写?请注意,只能是一条语句.
PKID sendname sendcontent
1 aaa fjsdfjf
2 ddd fdsafas
3 ccc fdjskkjf
4 fje fdskjffB表如下:
PKID answername answercontent
1 ddd fdjksffsd
1 eee fjdksfksdj
1 tt2 fjkdjkfj
3 ddd jfdjjeii
3 tt2 fjsjijwf其中sendname和answername都是用户名
我是在做一个小论谈,A表是主题表(也就是问题表),B表是回复表,我想用一条SQL语句查出所有ddd用户参与过的主题的A表的记录(不需要返回B表的记录),我是这么写的
SELECT * FROM A WHERE sendname='ddd' OR PKID=(SELECT PKID FROM B WHERE answername='ddd')
这样查报错,"子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的"。各位大哥,请问我想实现这样的查询用一条SQL语句应该怎么写?请注意,只能是一条语句.
没有测试,试一下,就是链接查询。
WHERE sendname='ddd' OR answername='ddd'
group by PKID尚未测试 先出去抽烟 回来再测试
如果正确 你把分给俺 俺都一年多了还是一颗星星 :(
上面这个可以了
Where A.PKID in
(
select B.PKID From B Where B.answername='ddd'
)
ctrl2(ctrl2.net) 的应该是正确的
SELECT * FROM A WHERE sendname='ddd' OR PKID in (SELECT PKID FROM B WHERE answername='ddd')建议用连接
select A.* from A left outer join B on A.pkid = B.pkid where A.sendname='ddd' or B.answername='ddd'