gpt4 book ai didi

php - 如果在表中找到 active = 1,则在 mysql 结果中完全排除用户 ID

转载 作者:行者123 更新时间:2023-11-30 21:35:28 25 4
gpt4 key购买 nike

我在 php 中使用 mysql 根据特定条件向客户发送一封提醒电子邮件,它应该只返回结果并向客户发送电子邮件,如果该唯一客户的 ca 帐户是 active=0 有些客户有多个 ca 帐户,所以它我是否将 active=0 和 active=1 用于他们的成员(member)资格

我已经尝试了下面的 SQL,它返回了 3 个结果Billy & Daniel 是正确的,他们只有 active = 0 所以应该出现Becky 的 2 个 ca 帐户分别有 active = 0 和 active = 1,因此 SQL 应该查看她的查询并意识到“没有 Becky 有 active = 1”,所以不应该出现。这只有 Billy , Daniel 被返回。

SELECT
u.id,
u.forename,
u.surname,
u.email,
m.password,
m.user_id,
m.active,
m.promotional_code
FROM
user u
LEFT JOIN ca_accounts c ON u.id = c.user_id
LEFT JOIN member m ON u.id = m.user_id
WHERE
u.active = 1 AND m.active = 1
AND m.group_id IN (26)
AND (from_unixtime(m.end_date) > NOW()
AND from_unixtime(m.end_date) < DATE_ADD(NOW(), INTERVAL 1 DAY))
AND c.active = 0
LIMIT 0, 25

产量:

id    forename surname  email   password    user_id active         
2923 Billy billy@ NULL 2923 1
4763 Daniel daniel@ NULL 4763 1
781 Beckly becky@ NULL 781 1

它应该产生什么:

id    forename surname  email   password    user_id active         
2923 Billy billy@ NULL 2923 1
4763 Daniel daniel@ NULL 4763 1

image of user id 781 ca account table

最佳答案

根据您提供的信息,问题似乎来自表 ca_accounts,其中多行属于同一用户,active 具有不同的值(0 1)。

要解决此问题,您可以将ca_accounts 上的JOIN 转换为WHERE 中的NOT EXISTS 条件子句,带有相关子查询,确保给定用户不存在 active = 1ca_accounts 记录。

SELECT
u.id,
u.forename,
u.surname,
u.email,
m.password,
m.user_id,
m.active,
m.promotional_code
FROM
user u
LEFT JOIN member m ON u.id = m.user_id
WHERE
u.active = 1 AND m.active = 1
AND m.group_id IN (26)
AND (from_unixtime(m.end_date) > NOW()
AND from_unixtime(m.end_date) < DATE_ADD(NOW(), INTERVAL 1 DAY))
AND NOT EXISTS (
SELECT 1
FROM ca_accounts c
WHERE u.id = c.user_id AND c.active = 1
)
LIMIT 0, 25

关于php - 如果在表中找到 active = 1,则在 mysql 结果中完全排除用户 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54099304/

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