仅当值不存在时才返回行

马德

我有2张桌子- reservation

   id  | some_other_column
   ----+------------------
   1   | value
   2   | value
   3   | value

第二张桌子- reservation_log

   id  | reservation_id | change_type
   ----+----------------+-------------
   1   | 1              | create
   2   | 2              | create
   3   | 3              | create
   4   | 1              | cancel
   5   | 2              | cancel

我只需要选择未取消的预订(在此示例中仅为ID 3)。我可以轻松地选择带有简单WHERE change_type = cancel条件的已取消,但由于WHERE没有在这里取消,所以我在努力避免未取消

巴尔玛
SELECT *
FROM reservation
WHERE id NOT IN (select reservation_id
                 FROM reservation_log
                 WHERE change_type = 'cancel')

要么:

SELECT r.*
FROM reservation r
LEFT JOIN reservation_log l ON r.id = l.reservation_id AND l.change_type = 'cancel'
WHERE l.id IS NULL

第一个版本更直观,但是我认为第二个版本通常会获得更好的性能(假设您在联接中使用的列上有索引)。

第二个版本有效,因为LEFT JOIN对于第一个表中的所有行都返回一行。ON条件成功,这些行会包括从第二表中的列,就像INNER JOIN当条件失败时,返回的行将包含NULL第二个表中的所有列。然后,WHERE l.id IS NULL测试将匹配这些行,因此它将查找表之间不匹配的所有行。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

仅当值不存在时才从SELECT插入表中

来自分类Dev

仅当所有行都不存在时才删除关系行

来自分类Dev

仅当不存在而未获取其 id 时才插入一行

来自分类Dev

SQL-仅当B不存在时才选择A

来自分类Dev

仅当记录不存在时才插入表

来自分类Dev

当值不存在时,为什么不添加新行?

来自分类Dev

当值不存在时设置一个值

来自分类Dev

Makefile-仅当文件不存在时才进行依赖

来自分类Dev

SQL查询-插入,但仅当记录不存在时才插入?

来自分类Dev

仅当数组不存在时才推送到该数组

来自分类Dev

仅当Nginx不存在文件时,才将URL重定向到PHP

来自分类Dev

仅当不存在MongoDB文档字段时,才如何更新它们?

来自分类Dev

仅当fb_id不存在时才插入-否则不执行任何操作-PHP

来自分类Dev

仅当数据库不存在时,ebean才运行ddl

来自分类Dev

仅当不存在与活动线程相同的线程名称时才创建线程(Python)

来自分类Dev

仅当队列中不存在项目时才将其添加到队列中

来自分类Dev

仅当记录不存在时才将数据保存到数据库cakephp 3.0

来自分类Dev

仅当元素不存在时才将元素添加到C数组

来自分类Dev

仅当列中不存在值时才尝试执行SQL命令

来自分类Dev

仅当前缀不存在时,如何才将前缀添加到列表项?

来自分类Dev

仅当id不存在时才插入数据库

来自分类Dev

仅当使用MySQL的值不存在时才如何从表中插入值?

来自分类Dev

仅当不存在较新的记录时才选择一条记录

来自分类Dev

仅当一个表中的数据不存在时才将其插入

来自分类Dev

Makefile-仅当文件不存在时才进行依赖

来自分类Dev

仅当不存在映射的网络驱动器时才运行计划的任务吗?

来自分类Dev

rsync-仅当某个文件不存在时才复制目录的内容

来自分类Dev

当且仅当文件被调用且不存在时,才触发CMake自定义命令

来自分类Dev

仅当数据库不存在时,ebean才运行ddl

Related 相关文章

  1. 1

    仅当值不存在时才从SELECT插入表中

  2. 2

    仅当所有行都不存在时才删除关系行

  3. 3

    仅当不存在而未获取其 id 时才插入一行

  4. 4

    SQL-仅当B不存在时才选择A

  5. 5

    仅当记录不存在时才插入表

  6. 6

    当值不存在时,为什么不添加新行?

  7. 7

    当值不存在时设置一个值

  8. 8

    Makefile-仅当文件不存在时才进行依赖

  9. 9

    SQL查询-插入,但仅当记录不存在时才插入?

  10. 10

    仅当数组不存在时才推送到该数组

  11. 11

    仅当Nginx不存在文件时,才将URL重定向到PHP

  12. 12

    仅当不存在MongoDB文档字段时,才如何更新它们?

  13. 13

    仅当fb_id不存在时才插入-否则不执行任何操作-PHP

  14. 14

    仅当数据库不存在时,ebean才运行ddl

  15. 15

    仅当不存在与活动线程相同的线程名称时才创建线程(Python)

  16. 16

    仅当队列中不存在项目时才将其添加到队列中

  17. 17

    仅当记录不存在时才将数据保存到数据库cakephp 3.0

  18. 18

    仅当元素不存在时才将元素添加到C数组

  19. 19

    仅当列中不存在值时才尝试执行SQL命令

  20. 20

    仅当前缀不存在时,如何才将前缀添加到列表项?

  21. 21

    仅当id不存在时才插入数据库

  22. 22

    仅当使用MySQL的值不存在时才如何从表中插入值?

  23. 23

    仅当不存在较新的记录时才选择一条记录

  24. 24

    仅当一个表中的数据不存在时才将其插入

  25. 25

    Makefile-仅当文件不存在时才进行依赖

  26. 26

    仅当不存在映射的网络驱动器时才运行计划的任务吗?

  27. 27

    rsync-仅当某个文件不存在时才复制目录的内容

  28. 28

    当且仅当文件被调用且不存在时,才触发CMake自定义命令

  29. 29

    仅当数据库不存在时,ebean才运行ddl

热门标签

归档