gpt4 book ai didi

mysql - 如何更正和重写此查询?

转载 作者:太空宇宙 更新时间:2023-11-03 12:30:44 24 4
gpt4 key购买 nike

SELECT * 
FROM users
WHERE id
IN ( 2024 )
AND id NOT IN (
SELECT user_id
FROM `used`
WHERE DATE_SUB( DATE_ADD( CURDATE( ) , INTERVAL 7 DAY ) , INTERVAL 14 DAY ) <= created)
AND id NOT IN (
SELECT user_id
FROM coupon_used
WHERE code = 'XXXXX')
AND id IN (
SELECT user_id
FROM accounts)

我在 users 表中有 id 2024,但这个 id 2024 存在于 used 表中。因此,当我运行此查询时,它还会显示 2024 id,应该将其过滤掉。我在选择特定用户的地方运行查询,然后我希望这些用户被过滤掉,他们不应该在使用过的表中。但是上面的查询并没有给我想要的结果。期望结果是我想通过以下条件选择用户:选择特定用户,并检查他们不在 used 表中,也不在 coupon_used 表中,但他们应该在 accounts 表中。

最佳答案

我会为排除条件使用左联接,为包含条件使用常规联接:

SELECT users.*
FROM users
INNER JOIN accounts ON accounts.user_id = users.id
LEFT JOIN used ON used.user_id = users.id AND DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= used.created)
LEFT JOIN coupon_used ON coupon_used.user_id = users.id AND coupon_used.code = 'XXXX'
WHERE id IN (2024) AND used.user_id IS NULL AND coupon_used.user_id IS NULL

我也编辑了日期操作; +7 -14 将是 -7 :)

关于mysql - 如何更正和重写此查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15524789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com