我目前有这个查询:
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';
答案 0 :(得分:1)
您忘记了GROUP BY子句将每个“S_ID”放在其自己的行上
从S_ID
中选择S_ID,从...组中计数(*)答案 1 :(得分: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;