如果使用MySQL存在发生模式,则查找值为x的所有行

如果使用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 |

我有两张桌子

表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中找到至少有一种模式的所有“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 |
+----+-----------+---------+

您的问题不清楚,请分享您的示例输出结果集。这是一个复杂的请求。为什么不从简单点的开始呢?