sql连接查询 mysql

来源:百度知道 编辑:UC知道 时间:2024/06/17 21:15:48
我想想举个什么例子....
就以问答为例吧
问题表 qid qname
回复表 rid qid rname
我要如何写一条sql语句
让取得的问题列表里能有回答数量

求此sql语句
补充下 select xx,xx from xxx where xx in(select xxxxx)这样是没有问题的
但是 select xx,count(select xxxxxx..) from .... 这样的写法不能通过
至少mysql不能 虽然这样的语句很容易理解
测试环境为phpmyadmin

追加个问题 补50分
mysql语句 判断时间差 即以多少天以内的数据作为where条件

SELECT qid, qname, (SELECT COUNT(*) FROM 回复表 WHERE qid = 问题表.qid) AS cnt FROM 问题表

你的目的是即取得回答列表,又包含回答数量是吧?
关于这个问题,其实并不是一个SQL语句能解决的,也就是说SQL不能在一个语句里即给你回答的总数还给你所有回答 的内容列表.
这个功能实现一般要通过两个SQL语句来实现.
1 获得回答数,就象其他人的答复一样:
select qname, count(rid) as 回答数量
from 问题表 q, 回复表 r
where q.qid=r.qid and q.qname=?
2获得所有回复
select r.*
from 问题表 q, 回复表 r
where q.qid=r.qid and q.qname=?
其中也可以加入分页功能

如果要实现分页功能,则必须用上面方法,但如果所有内容在1页内显示,则可以取出记录集合后,用程序来获得,比如你把所有的回复记录放到JAVA的LIST里,这是就可以用SIZE()方法获得数量

select xx,count(select…… 这样的语法当然不行
下面的Sql语句在MySql5.01上运行通过

你的错别字真多,是不是要取得每个问题的回答个数?
select a.*,(select count(*) from 回复表 where qid = a.qid) as 回答数量 from 问题表 a

select a.qname,count(*) from 问题表 a,回复表 b where
a.qid=b.qid

mysql sql语句我不太会写,不过你可以试着在两个表中建立相同字段,然后把这两个表关联上,应该差不多,这里我找了个sql语句
update b set b_photo=(select photo from A where A.UID=B.UID)
试试看吧~