我有两个表:“用户”->“订单”
表:用户
user_id
-----------
    u1
    u2
表:订单
order_id | user_id | flag
-------------------------
    o1   |    u1   |  fA
    o2   |    u2   |  fB
Y 需要获取所有用户,计算有多少次带有标志'fA'的订单
结果我需要什么:
user_id | orders
----------------
   u1   |   1
   u2   |   0
我尝试:
SELECT
    u.user_id,
    COUNT(o.order_id) AS orders
FROM
    `user` AS u LEFT JOIN
    `order` AS o USING (user_id)
WHERE
    o.flag IS NULL OR
    o.flag IN ('fA')
GROUP BY
    u.user_id;
但是,这个查询不包括user=u2因为他没有带有fA标志的订单;我需要user=u2出现orders=0
也许是这样的:
SELECT
    u.user_id,
    COUNT(o.order_id IF o.flag IN('fA')) OR 0 AS count ...
表格和数据:
CREATE TABLE `user` (user_id VARCHAR(2) NULL);
CREATE TABLE `order` (order_id VARCHAR(2) NULL,user_id VARCHAR(2) NULL,flag VARCHAR(2) NULL);
INSERT INTO `user` VALUES ('u1'), ('u2');
INSERT INTO `order` VALUES ('o1','u1','fA'),('o2','u2','fB');