gpt4 book ai didi

mysql - 获取列中具有连续数字的唯一 ID 列表

转载 作者:行者123 更新时间:2023-11-29 02:41:35 25 4
gpt4 key购买 nike

我不确定是否可以单独使用 mysql 查询来完成此操作,但我有一个以下格式的表:

+----+-----------+-----------------+-------+
| id | recipe_id | ingredient_id | order |
+----+-----------+-----------------+-------|
| 1 | 1 | 26 | 2 |
+----+-----------+-----------------+-------|
| 2 | 1 | 95 | 1 |
+----+-----------+-----------------+-------|
| 3 | 1 | 42 | 3 |
+----+-----------+-----------------+-------|
| 4 | 2 | 22 | 1 |
+----+-----------+-----------------+-------|
| 5 | 2 | 15 | 2 |
+----+-----------+-----------------+-------|
| 6 | 2 | 1 | 3 |
+----+-----------+-----------------+-------|
| 7 | 3 | 95 | 1 |
+----+-----------+-----------------+-------|
| 8 | 3 | 33 | 2 |
+----+-----------+-----------------+-------|
| 9 | 3 | 23 | 3 |
+----+-----------+-----------------+-------|

我想生成一个列表,其中包含所有具有连续 order 编号的 recipe_id。例如:1、2、3 等等(例如 recipe_id 2)但如果它们不是,例如 recipe_id 1 有 2、1、3,所以顺序不对。

我使用的是 php,但我想先了解单独使用 mysql 是否可行。

最佳答案

您可以使用它来获取订单号不随 id 增加的所有食谱

SELECT * FROM mytable AS a, mytable AS b 
WHERE ((a.id < b.id AND a.order > b.order) OR (a.id > b.id AND a.order < b.order)) AND a.recipe_id = b.recipe_id

这一个用于获取所有食谱,其中的订单排成一行

SELECT recipe_id, MAX(`order`)-MIN(`order`)+1=COUNT(`order`), GROUP_CONCAT(`order`) 
FROM mytable GROUP BY recipe_id

这只是一个开始,希望对你有所帮助

我创建了一个 fiddle https://www.db-fiddle.com/f/dakAHH5YXt3o1rahXFznLy/0

关于mysql - 获取列中具有连续数字的唯一 ID 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50807800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com