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

丹尼尔

我在php中使用mysql根据某些条件通过电子邮件向客户发送提醒电子邮件,如果唯一客户的ca帐户处于活动状态= 0,则某些客户拥有多个ca帐户,则它仅应返回结果并向客户发送电子邮件,这样我active = 0,active = 1,其成员资格

我尝试了下面的SQL,该SQL返回3个结果Billy&Daniel是正确的,它们只具有active = 0,所以应该出现Becky的2个CA帐户同时具有active = 0和active = 1,因此SQL应该查看她的查询并意识到“没有贝基有活跃= 1”,所以不应该出现。这只比利,丹尼尔才归还。

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   

用户ID 781 ca帐户表的图像

专线小巴

根据您提供的信息,问题似乎出在table上ca_accounts,其中多行属于同一用户,并且active01)的值不同

为了解决这个问题,您可以子句中将JOINonca_accounts转换为NOT EXISTSondition WHERE,并使用相关的子查询来确保给定用户没有ca_accounts与之相关的记录active = 1

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 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果在表中找到MySql,则返回“ I FOUND IT”字符串

VBA:如果在参考表中找到值,则将数据+字段从源表中拉到目标表中

MySQL:如果在第二张表中找到匹配的ID并添加缺少的内容,如何在第一张表中“覆盖”数据

如果在组中找到NULL值,则MySQL排除组

如果在工作表1 A列中找到值,则需要将整个行从工作表2粘贴到工作表3

如果在上一个查询中找到Laravel,则跳过结果

如果在字段中找到指定值,是否拒绝PDO MySQL语句?

Excel 函數 - 如果在 B 列中找到 A 列中的字符串,則

如果在测试文件中找到字符串,如何使dos中的find命令失败?

如果在辅助列表中找到匹配项,则替换主列表中的字段

Excel公式:如果在B列中找到重复项,则在D列中添加“ Y”值

如果在其他工作表上找到ID,则高亮显示行

如果在分组或分区后未找到列值,则SQL从表中过滤出记录

如果在表中未找到重复项,则插入;否则,更新

如果在R的另一个列表中找到ID,则删除数据框的行

如果在 C# 中的数据库中找到数据,如何在启动时显示表单

在 MySQLi 中按相关性排序 - 如果在某行中找到关键字,则首先按此排序

如果在另一个列表中找到特定属性,则从列表中删除元素

如果在另一个 CSV 文件中找到行值,则从 CSV 文件中过滤行

如果在另一数据框中找到其列值,则从数据框中删除该行

如果在 Rest Api 调用中没有从数据库中找到数据,则返回哪个 HTTP 状态代码

如果在另一列(c)中找到另一列(b)中的值,则在第一列(a)中输入文本

如果在另一列中找到特定值1次或多次,如何保留列ID的所有实例

如果在另一数据框的列中找到ID匹配,则更新数据框中的一列的值

如果在數組中找到單詞,則 Vue.js 按下拉列表過濾(僅不完全匹配)

如果在A列中找到匹配的字符串,将单元格文本从Book1的E和F复制到Book2?

grep文件中某行中的某个特定模式,如果在同一行中找到匹配项,则输出该行

如果在数据库的任何集合中找到特定的归档值,如何在mongodb中复制旧文档并创建新文档

如果在 bash 中找到字符串(来自另一个文本文件),则删除 csv 文件中的行