我有两张 table
表A
--id--something--
| 1 | x |
| 2 | y |
| 3 | x |
| 4 | z |
| 5 | x |
| 6 | z |
表B
--id-----A.id-----Value--
| 1 | 1 | 0 |
| 2 | 5 | 1 |
| 3 | 10 | 1 |
| 4 | 17 | 1 |
| 5 | 19 | 0 |
| 6 | 34 | 1 |
我想从表 A 中找到所有“某物”,它们至少具有一种模式:有一行与表 B 相关,其值 = 0,而下一行在“某物”列中具有相同的值。与表 B 完全没有关系。
在这种情况下,它将是:
x
因为:
连接表:
--id--something-- --id-----A.id-----Value--
| 1 | x | | 1 | 1 | 0 |
| 3 | x | |NULL| NULL | NULL |
最佳答案
如上所述,虽然确实可行,但这是一个相当复杂的请求。不管怎样,这里有一些可以帮助你开始的东西......
SELECT x.*
, MIN(y.id) next_id
FROM a x
JOIN a y
ON y.id > x.id
AND y.something = x.something
GROUP
BY x.id;
+----+-----------+---------+
| id | something | next_id |
+----+-----------+---------+
| 1 | x | 3 |
| 3 | x | 5 |
| 4 | z | 6 |
+----+-----------+---------+
关于mysql - 如果存在使用 MySQL 的出现模式,则查找具有值 x 的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51211425/