mysql - MYSQL 中不存在多个来检查行数

标签 mysql sql

我正在尝试使这个查询工作,这是我的逻辑,我正在尝试选择至少没有以下选项之一的记录:

1). status = Approved AND end_date >now
2). status =Approved AND end_date is NULL
3). status = Pending And end_date is NULL & COUNT(id) =1
4). status =Pending AND end_date >now & COUNT(id) =1
5). status =Pending AND end_date <now & COUNT(id) =1

如何完成此操作,这是我到目前为止所拥有的,我不确定如何检查条件 3、4 和 5 中的 COUNT(id) = 1?

SELECT
    *
FROM
    outreach
WHERE
    NOT EXISTS (
        SELECT
            *
        FROM
            outreach_links
        WHERE
            outreach_links.outreach_id = outreach.id
        AND STATUS = "Approved"
        AND end_date > now()
    )
AND NOT EXISTS (
    SELECT
        *
    FROM
        outreach_links
    WHERE
        outreach_links.outreach_id = outreach.id
    AND STATUS = "Approved"
    AND end_date IS NULL
)
AND NOT EXISTS (
    SELECT
        *
    FROM
        outreach_links
    WHERE
        outreach_links.outreach_id = outreach.id
    AND STATUS = "Pending"
    AND end_date > now()
)
AND NOT EXISTS (
    SELECT
        *
    FROM
        outreach_links
    WHERE
        outreach_links.outreach_id = outreach.id
    AND STATUS = "Pending"
    AND end_date IS NULL
)
AND NOT EXISTS (
    SELECT
        *
    FROM
        outreach_links
    WHERE
        outreach_links.outreach_id = outreach.id
    AND STATUS = "Pending"
    AND end_date < now()
)

最佳答案

select
    o.*,
    SUM(if(ol.status = "Approved" and (ol.end_date > now() or end_date is null), 1, 0)) as cond1,
    SUM(if(ol.status = "Pending" and (ol.end_date != now() or end_date is null), 1, 0)) as cond2
from
    outreach o
left join 
    outreach_links ol on ol.outreach_id = o.id
group by
    o.id
having
    cond1 = 0 and cond2 != 1
;

不确定这是否是您正在寻找的,但您可以尝试一下。 cond2 != 1 使您的 COUNT(id) = 1 条件(如果 outreach_links 中有多个链接 id cond2 将大于 1)

关于mysql - MYSQL 中不存在多个来检查行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41113660/

相关文章:

java - Hibernate (mysql) 为同一个查询返回不同的结果

MySQL使用where & 和条件过滤结果

php - 为 MySQL 中的 INSERT 查询声明 php 变量

php - SQL Select 对多列进行计数并排序

php - 更新 SQL 表中的所有字段

mysql - Rose DB 子选择(嵌套查询)

mysql - 如何获取多列不同值并且每个不同字段具有相同的反向数据

PHP:格式化来自mysql数据库的日期?

mysql - 什么时候应该使用复合索引?

php - MySQL 中带有外键的分层数据