首页 >数据库 >mysql教程 >如何从数据库中检索未取消的预订记录?

如何从数据库中检索未取消的预订记录?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-23 19:46:44671浏览

How to Retrieve Uncancelled Reservation Records from a Database?

检索未取消的预订记录

给定两个表,reservation 和reservation_log,其中reservation 包含一般预订信息,reservation_log 跟踪对预订所做的更改(包括取消),该任务是提取尚未取消的预订。一个简单的 WHERE 子句可以有效地识别已取消的预订,但在搜索未取消的记录时效果不佳。

幸运的是,可以采用两种方法来完成此任务:

方法 1:使用 NOT IN

此方法利用 NOT IN 子句来排除具有匹配取消的预订

SELECT *
FROM reservation
WHERE id NOT IN (
  SELECT reservation_id
  FROM reservation_log
  WHERE change_type = 'cancel'
);

方法 2:使用 LEFT JOIN

另一种方法是使用 LEFT JOIN 操作。左连接检索预订表中的所有行,并包括预订日志表中的相应行(如果存在)。没有匹配取消记录的行在reservation_log 列中将具有NULL 值。然后 WHERE 子句可以过滤掉这些行。

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;

以上是如何从数据库中检索未取消的预订记录?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn