我有两个表,client_table和order_table
client_table中的条目是唯一的,其中id为主键 在order_table中,order_id是主键,也是client_id字段。 client_id是client_table的主键。 order_table中可以有多个包含相同client_id的条目。所以这是一对多的关系。
我正在尝试提出一个在order_table中产生最多发生的client_id的查询
我尝试了以下查询。
SELECT a.id FROM `client_table` as a inner join order_table as b GROUP BY a.id ORDER BY count(b.client_id)
所以我正在寻找拥有最多订单的client_id的结果。我想我只需要order_table而且不需要client_table吗?
答案 0 :(得分:0)
你可以尝试:
SELECT a.id FROM `client_table` as a left join order_table as b ON a.id = b.client_id GROUP BY a.id ORDER BY count(b.client_id) desc
在ORDER BY中使用DESC以获得大多数出现。现在你只得到最低的出现率,并尝试将INNER JOIN改为LEFT JOIN。
答案 1 :(得分:0)
SELECT b.client_id, count(*) AS Clients
FROM order_table AS b
GROUP BY b.client_id
ORDER BY Clients DESC
如果您只想要客户端ID,则无需加入,就像您说的那样。此外,如果要加入,例如在示例查询中,则需要指定具有ON
子句的列。
... inner join order_table as b on a.id=b.client_id ...
答案 2 :(得分:0)
是的,您根本不需要客户端表:
select
client_id,
count(order_id) order_count
from
order_table
group by
client_id
order by
count(order_id) DESC