【发布时间】:2020-02-14 20:26:13
【问题描述】:
我想退回状态为 C 但没有状态为 A、B 的卡的用户。
当前查询返回我记录谁有 C 但他们也有 B!在这种情况下,我想获得 null。
SELECT u.*,
b.id AS categories,
c.id AS cards
FROM users AS u
JOIN categories AS b ON u.id = b.user_id
JOIN cards AS gac ON u.id = c.user_id
WHERE b.type = 'whatever' AND
c.status NOT IN ('A', 'B') AND c.status = 'C';
在 ruby on rails 中:
users = User.includes(categories: :cards).where(categories: {type: :whatever}).where.not(cards: {status: ['A', 'B']}).where(cards: {status: 'C'})
所以如果他们在 [A, B] 和 C 中都有卡,我不想让用户返回!!!
【问题讨论】:
-
问题是,一条记录可以同时具有两种状态吗?我不太清楚这个问题
-
c.status NOT IN ('A', 'B') AND c.status = 'C'奇怪的情况 -
不,每张卡只有一个状态@YuriiVerbytskyi
标签: mysql sql ruby ruby-on-rails-5