You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多条件SQL查询需求:关联3张表筛选指定用户与商品数据

解决方案

直接给出适配需求的SQL语句及关键调整说明:

SELECT 
    t1.user_name AS 'User_Name',
    GROUP_CONCAT(t3.item_id ORDER BY t3.item_id ASC) AS 'Shipped'
FROM table1 t1
LEFT JOIN table3 t3 
    ON t1.id = t3.user_id
    AND (
        (t3.user_id != 17 AND t3.shipped = 1)
        OR (t3.user_id = 17 AND t3.stat = 0)
    )
GROUP BY t1.id, t1.user_name
ORDER BY COUNT(t3.item_id) DESC;

核心调整点:

  • 改用LEFT JOIN从table1发起关联:确保所有用户都被保留,无符合条件商品的用户会在Shipped列返回NULL,满足无对应记录时返回NULL的需求。
  • 将筛选条件嵌入JOIN子句:避免WHERE子句过滤掉无table3记录的用户,同时精准实现分场景筛选:
    • user_id≠17时,仅关联shipped=1的table3记录
    • user_id=17时,仅关联stat=0的table3记录
  • 修正原SQL的错误:把accounts改为table1,t1.username改为t1.user_name,移除未用到的table2关联以减少冗余

示例数据对应输出:

User_NameShipped
User16,7,8,9
User17NULL

若只需显示有符合条件商品的用户,可在语句末尾添加HAVING Shipped IS NOT NULL。

内容的提问来源于stack exchange,提问作者master_of_nothing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 13:18:12