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

如何查询未删除帖子及存在交易记录的已删除帖子

解决方案

可以通过两种简洁的方式实现你的查询需求,以下是具体SQL语句及逻辑说明:

方法1:使用EXISTS子查询

SELECT p.*
FROM Posts p
WHERE p.deleted_at IS NULL
   OR EXISTS (
       SELECT 1
       FROM Transactions t
       WHERE t.post_id = p.id
   );

逻辑说明

  • p.deleted_at IS NULL:直接筛选出所有未被删除的帖子
  • OR EXISTS (...):补充筛选出存在对应交易记录的已删除帖子,只要交易表中存在该帖子的记录,就会被纳入结果

方法2:使用LEFT JOIN结合DISTINCT

SELECT DISTINCT p.*
FROM Posts p
LEFT JOIN Transactions t ON p.id = t.post_id
WHERE p.deleted_at IS NULL
   OR t.id IS NOT NULL;

逻辑说明

  • 通过LEFT JOIN关联帖子表与交易记录表,保留所有帖子的基础数据
  • p.deleted_at IS NULL 筛选未删除的帖子
  • t.id IS NOT NULL 筛选出有对应交易记录的帖子(包含已删除的)
  • DISTINCT 用于避免单个帖子对应多条交易记录时出现重复输出

结果验证

针对你提供的测试数据:

  • 帖子id=2:deleted_at为空,会被第一个条件选中
  • 帖子id=1:deleted_at不为空,但交易表存在对应记录,会被第二个条件选中
    最终结果会包含这两条帖子,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:27:01