php - 根据范围从收据簿中提取缺失的号码

标签 php mysql sql

我想打印收据簿中缺少的收据编号(即我没有使用过)。

我有一个名为 receipt_book 的表,我可以在其中定义收据编号范围(即开始和结束编号),例如 1 到 100。我将根据范围插入收据编号。现在我想要一个 MySQL 查询来获取我没有使用的数字列表。例如:

+-----------------+--------------+------------+
| receipt_book_id | start_number | end_number |
+-----------------+--------------+------------+
|               1 |            1 |         5  |
+-----------------+--------------+------------+

+----------------+--------------+
| user_id        |receipt_number|
+----------------+--------------+
|               1|            1 | 
|               2|            3 | 
+----------------+--------------+

在上表中我使用了收据编号 1、3

我想要低于预期的结果

+----------------------+
| NotUsedReceiptNumber |
+----------------------+
|                   2  | 
|                   4  | 
|                   5  | 
+----------------------+

最佳答案

考虑创建一个包含所有可能的收据编号(1、2、...、100)的表并加入它:

SELECT receipt_numbers.receipt_number
FROM       receipt_book
INNER JOIN receipt_numbers ON receipt_numbers.receipt_number BETWEEN receipt_book.start_number AND receipt_book.end_number
LEFT  JOIN receipt_used    ON receipt_numbers.receipt_number = receipt_used.receipt_number
WHERE receipt_used.receipt_number IS NULL

关于php - 根据范围从收据簿中提取缺失的号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58323304/

相关文章:

php - 忽略特定长度后输入的文本 PHP JQuery 搜索

php - 如何使用 php 函数而不是默认的 WP 函数从主页中排除类别?

Mysql基于时间引用分区

php - 解析 SQL 字符串

c# - 关于SQL注入(inject)和参数化查询的问题

php - Symfony 路由 - 语言环境作为子域,回退到默认

PHP 从 MYSQL 查询中获取空值

javascript - 无法使用 mysql 数据库中的数据以 3D 方式显示 Highcharts

php - SQL - 为什么我的 INSERT 查询死了?

sql - SQL 查询的日期