通过 M2M 获取 ID 为空或不等于特定 ID 的关联记录

问题描述 投票:0回答:1

我有一个表,我们就叫TableA,它与账户表有关系,我们就叫TableB。现在,TableA 是一种通知,我可以使用 TableB 的 m2m 字段跟踪谁已经阅读了它。我想要一个 API 端点,我可以将当前登录用户的 ID 传递给它并返回该用户(表 B)尚未读取的通知(表 A 的记录)。我无法找出正确的查询。

以前,我有一些看起来像这样的东西:

SELECT server_notifications.id, server_notifications.created_at,
       server_notifications.updated_at, server_notifications.message,
       snr.account_id, snr.server_notification_id 
FROM `server_notifications` 
LEFT JOIN server_notif_read_by_accounts snr
    ON server_notifications.id = snr.server_notification_id
WHERE (snr.account_id IS NULL OR snr.account_id <> 'some-account-id')
  AND `server_notifications`.`deleted_at` IS NULL;

但我意识到它会正确返回它应该返回的内容(哈哈,叹息),但这不是我所期望的。该查询确实返回与我传递的帐户 ID 不关联的 TableA 记录,但我想要获取的是尚未与

account_id
关联或已关联但不应包含的每个 TableA 记录与不同
account_id
关联的其他记录。

sql mysql go-gorm
1个回答
0
投票

我想我已经找到了问题的答案。我需要使用

NOT EXISTS
进行查询,但我确实没有使用过。 https://stackoverflow.com/a/6545240/10464730

© www.soinside.com 2019 - 2024. All rights reserved.