MYSQL 过滤多个日期作为数组

标签 mysql sql date

下面的代码可以正常工作,但现在我想像这样添加多个日期:

reservationStartDate = 2018-07-16, 2018-07-17

SELECT 
    *,
    SUM(IF(reservationId IS NULL,
        0,
        reservationStartDate = '2018-07-17')) AS ConflictingReservations
FROM
    units
        LEFT JOIN
    reservations ON (unitsId = reservationSpace)
WHERE
    unitsType = 'room1'
GROUP BY unitsId
HAVING ConflictingReservations = 0;

最佳答案

我会这样做:

SELECT u.unit_id,
       SUM(r.reservationStartDate IN ('2018-07-17')) AS ConflictingReservations
FROM units u LEFT JOIN
     reservations r
     ON u.unitsId = r.reservationSpace
WHERE u.unitsType = 'room1'
GROUP BY u.unitsId
HAVING ConflictingReservations = 0;

或者,更简单地说:

SELECT u.*
FROM units u LEFT JOIN
     reservations r
     ON u.unitsId = r.reservationSpace AND
        r.reservationStartDate in ( . . . )
WHERE u.unitsType = 'room1' AND r.reservationSpace IS NULL;

根本不需要 GROUP BY,因为您没有使用计数。

关于MYSQL 过滤多个日期作为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51139253/

相关文章:

date - 在jSTL中获取日期差异

python将PST时间转换为UTC isoformat

mysql - phpMyAdmin 内部服务器错误 500 - 无效的 JSON

python - 如何使用Python+SQLAlchemy远程连接MySQL数据库?

Mysql delete with join 不起作用

mysql - SQL统计高于和低于平均分的学生人数

php - 我如何模式化 php 数据库调用?

php - SQL 排序规则不起作用

asp.net - 使用 CTE SQL Server 2008 来重复记录

MYSQL 查询 : ORDER BY specific date