如果使用MySQL存在发生模式,则查找值为x的所有行
我有两张桌子 表A如果使用MySQL存在发生模式,则查找值为x的所有行,mysql,Mysql,我有两张桌子 表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 |
--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中找到至少有一种模式的所有“something”:有一行与表B的关系为value=0,下一行与列“something”中的相同值与表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 |
+----+-----------+---------+
您的问题不清楚,请分享您的示例输出结果集。这是一个复杂的请求。为什么不从简单点的开始呢?