Mysql从2行中选择记录
我有一个表格,包括一些类似的数据。这是问答脚本的示例。ID是自动递增的,如果PID=0,则为问题,当回答任何问题时,则PID设置为问题的ID。回答时没有主题Mysql从2行中选择记录,mysql,select,Mysql,Select,我有一个表格,包括一些类似的数据。这是问答脚本的示例。ID是自动递增的,如果PID=0,则为问题,当回答任何问题时,则PID设置为问题的ID。回答时没有主题 ID PID SUBJECT CONTENT DATE 1 0 First Question This is my first 09/01/2013 2 0 Second Question
ID PID SUBJECT CONTENT DATE
1 0 First Question This is my first 09/01/2013
2 0 Second Question This is second 09/01/2013
3 1 Yes this is first 09/01/2013
4 2 I agree this is second 10/01/2013
5 0 Third Question This is third question 11/01/2013
6 1 Reply to first 11/01/2013
7 1 Another reply to first 12/01/2013
8 5 This is reply of 5th 13/01/2013
9 2 Last try for second 14/01/2013
我的问题是,
我如何选择具有回复计数的问题
Ex.
First Question (3)
Second Question (2)
Third Question (1)
我如何选择今天回答的问题或答案
Ex. For 09/01/2013
First Question (2) ---> 1 question and 1 answer but 2 actions
Second Question (1) ---> just 1 question
关于问题1
select PID,count(*) from table
where pid<>0
group by PID
从表中选择PID、计数(*)
pid0在哪里
按PID分组
关于问题2
select PID,count(*) from table
where pid<>0 and date=current_date()
group by PID
从表中选择PID、计数(*)
其中,pid0和日期=当前_日期()
按PID分组
选择问题并加入答案:
select q.id, q.subject, count(a.id)
from yourtable q
left join yourtable a on q.id=a.pid
where q.pid=0
group by q.id;
尝试加入第一个任务
SELECT
q.id as ID,
q.pid as PID,
q.subject as SUBJECT,
COUNT(lq.id) as Total
FROM questions as q
LEFT JOIN questions as lq ON lq.pid = q.ID
WHERE q.PID = 0
GROUP BY q.id
输出
ID PID SUBJECT TOTAL
1 0 First Question 3
2 0 Second Question 2
5 0 Third Question 1
ID PID SUBJECT TOTAL DATE
1 0 First Question 2 January, 09 2012 00:00:00+0000
2 0 Second Question 1 January, 09 2012 00:00:00+0000
编辑:第二部分。你应该注意到做同样的任务还有很多其他的方法
SELECT
q.id as ID,
q.pid as PID,
q.subject as SUBJECT,
(COUNT(lq.id) - 1) as Total,
q.date
FROM questions as q
LEFT JOIN questions as lq ON lq.pid = q.ID OR lq.id = q.PID
WHERE q.date = DATE(NOW())
输出
ID PID SUBJECT TOTAL
1 0 First Question 3
2 0 Second Question 2
5 0 Third Question 1
ID PID SUBJECT TOTAL DATE
1 0 First Question 2 January, 09 2012 00:00:00+0000
2 0 Second Question 1 January, 09 2012 00:00:00+0000
谢谢你的回复,那么今天的问题我该怎么做呢?@Seyhan:在where子句中添加
和q.date=curdate()
(假设你的date列实际上是date类型),这并不是我想要的