mysql - 如果存在使用 MySQL 的出现模式,则查找具有值 x 的所有行

标签 mysql

我有两张 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/

相关文章:

mysql - 很多表或行,在 SQL 中哪一个更高效?

mysql - 重用 "sum(table_column) as x"

MySQL 表 JOIN 与 LIKE 不添加另一个 ID 列

MySQL 选择其中行大于 1

mysql - 将C代码的输出重定向为MySQL服务器的输入

php - 在选择查询mysql中使用嵌套IF

php - 更改来自数据库的日期格式?

mysql - Codeigniter:从 DateTime Mysql 获取日期

php - laravel 如何在 Eloquent 中使用力指数

mysql - 如何取消MySQL中having子句的组效应?