1

我目前有这个查询:

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';
4

2 回答 2

1

您忘记了 GROUP BY 子句将每个“S_ID”放在自己的行上

select S_ID, count(*) from ... 按 S_ID 分组

于 2012-05-03T01:31:56.910 回答
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;
于 2012-05-03T01:33:33.417 回答