mysql - 如果存在使用 MySQL 的发生模式,则查找所有值为 x 的行
问题描述
我有两张桌子
表 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 |
+----+-----------+---------+
推荐阅读
- python - 如何防止自动toctree条目编号?
- python - 如何在神经网络中手动计算分类?
- php - 组合 2 个 For Each 循环 PHP
- mysql - 我有一个包含非英文单词的文本文件,我需要将它放入 mysql 我该怎么做?
- java - 将 Kotlin 算法翻译成 Java 代码
- paypal - 使用 PayPal 订阅 API 收取税款
- c++ - 如何通过 C++ 部分获取文件中的行
- python - 错误的列表输出超出预期
- linux - 在 FTP 命令模式下,如何重定向命令行以及使用 shell 脚本使用此处文档让 ftp 命令读取标准输入时的结果
- python - 如何在python中生成函数n次并计算数字?