2012-05-03 30 views
1

我现在有这个疑问:MySql的选择查询帮助 - 如何算次查询出现了数

SELECT s_id FROM orderline,order_t WHERE orderline.o_id=order_t.o_id AND c_name='John Smith'; 

,并返回此:

+------+ 
| s_id | 
+------+ 
| 12 | 
+------+ 
| 11 | 
+------+ 
| 10 | 
+------+ 
| 10 | 
+------+ 

,但我想输出有两个列的右列来计算左列出现在查询中的次数..所以我希望输出与这一个完全一样:

+------+-------+ 
| s_id | count | 
+------+-------+ 
| 12 | 1 | 
+------+-------+ 
| 11 | 1 | 
+------+-------+ 
| 10 | 2 | 
+------+-------+ 

这可能吗?

我试过这个查询,但它显然是错误的,因为它计算了s_id的行数。

SELECT s_id,count(*) FROM orderline,order_t WHERE orderline.o_id=order_t.o_id AND c_name='John Smith'; 

回答

1

你忘了GROUP BY子句让每个 “S_ID” 在自己的行

选择S_ID,通过S_ID

从...组COUNT(*)
+0

Ooooh是对的T____T非常感谢你! – user1355122

1

您需要使用GROUP BY:

SELECT s_id, count(*) AS `count` 
FROM orderline,order_t 
WHERE orderline.o_id=order_t.o_id AND c_name='John Smith' 
GROUP BY s_id;