可以使用子查询和GROUP BY语句来实现:

SELECT COUNT(*) AS user_count
FROM (
  SELECT user_id
  FROM user_order
  WHERE order_id IN (
    SELECT order_id
    FROM order_payment
    WHERE payment_method IN ('1', '2')
    GROUP BY order_id
    HAVING COUNT(DISTINCT payment_method) = 2
  )
  GROUP BY user_id
  HAVING COUNT(DISTINCT order_id) >= 2
) AS users;

解释一下查询的过程:

  1. 子查询中,先找出支付方式为1或2的订单ID,并且这些订单ID同时含有支付方式1和2,即这些订单同时使用了支付方式1和2。
  2. 根据这些订单ID,再找出对应的用户ID。
  3. 对用户ID进行分组,并统计每个用户使用的订单数量。
  4. 最后筛选出使用了至少两个订单的用户,并统计符合条件的用户数量。

注意,这里使用了DISTINCT关键字,避免重复计算订单或支付方式。

我有两张数据库表一张包含用户ID和订单ID这两个字段是一对多的关系。一张包含订单ID和支付方式这两个字段是一对一的关系。要怎么用SQL查询有多少用户同时使用了支付方式1和2

原文地址: https://www.cveoy.top/t/topic/bFjr 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录