我想打印收据簿中缺少的收据编号(即我没有使用过)。
我有一个名为 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/