php - 根据范围从收据簿中获取缺失的数字
问题描述
我想打印收据簿中缺少的收据编号(即我没有使用过的)。
我有一个名为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
推荐阅读
- c# - c# 数组合并没有欺骗。我不能使用 Linq 和列表
- javascript - 在绿色和红色之间切换,将有一个计数器来计算按下切换的次数
- python - django get_queryset() 和条件过滤器()
- reactjs - React TypeError:无法在 Internet Explorer 11 中重新定义不可配置的属性“错误”
- javascript - 使用 foreach() 循环元素数组时,如何从 JQuery 中模拟 $()?
- javascript - 如何在 fullcalnedar 中使用各种功能?
- c# - 根据 AppPool 用户设置临时文件位置?
- c# - 打开应用程序时设置DataList项的背景颜色
- html - 在 HTML5 中滚动文章元素时出现问题
- javascript - NPM ReactPlayer 组件在全屏视频中包含滚动条