【发布时间】:2019-10-07 19:23:49
【问题描述】:
我想运行 sql 查询,为我带来两个日期之间没有吃任何蛋糕的孩子。 2 表:
* Child
- id, name
* Cake
- child_id, eat_timestamp
一个孩子(安迪)吃了 2 个蛋糕:10.01.2019 和 11.01.2019
我想在 09.01.2019 - 10.01.2019 之间进行搜索。 所以 Andy 不应该出现在列表中,但是由于 left join,它会显示他,因为它匹配第二个日期(11.01.2019)
select * from children c LEFT JOIN
public.cake cake
ON ((cake.child_id = c.id)
AND
(
0 =
(
SELECT
COUNT(cake2.id)
FROM
public.customer t13,
public.cake cake2
WHERE
(
((cake2.child_id = t13.id)
AND
(
cake2.time_planned >= '2019-01-09 00:00:00.0'
)
)
AND
(
cake2.time_planned <= '2019-01-10 23:59:59.999'
)
)
【问题讨论】:
-
是 MySQL 还是 PostgreSQL?
-
PostgreSQL 但我猜这个解决方案也适用于 MySQL
-
请添加一些示例数据和预期输出
标签: mysql postgresql jpa