1. 解题思路:
    看题目要求:
    “请你写出一个sql语句查询在2025-10-15以后,同一个用户下单2个以及2个以上状态为购买成功的C++课程或Java课程或Python课程的user_id,并且按照user_id升序排序”
    我们来拆分里面的各种条件:
  • 看第一个就是查询时间要在 2025-10-15之后,我们很容易就想到需要一个WHERE来做条件筛选,转换成对应SQL语句👉 WHERE date > '2025-10-15';
  • 其次,同一个用户这句就代表我们要做分组操作,所以会用到 GROUP BY user_id;
  • 接着是下单2个以及2个以上的,这就说明分组的时候还有个筛选条件,这里就要用HAVING理。所以转换成SQL语句👉 HAVING COUNT(user_id) >= 2;
  • 然后这里说“状态为购买成功C++课程Java课程Python课程”,即表明有两个并列的条件筛选。这里放到WHERE语句中就是用AND来并列两个条件,转换成SQL语句👇
    AND status LIKE 'c%'
    AND product_name IN ('C++', 'Java', 'Python')

这里用LIKE语句进行字符串的匹配可以加快查询速度。

  • 最后按 user_id 升序排序,就很简单一句:ORDER BY user_id
  1. 参考答案
    最后我们按sql语句的查询顺序来合并上面的语句就得到最后的答案:
    SELECT user_id FROM order_info WHERE date > '2025-10-15' 
    AND status LIKE 'c%' 
    AND product_name IN ('C++', 'Java', 'Python')
    GROUP BY user_id HAVING COUNT(user_id) >= 2
    ORDER BY user_id;