MySQL选择不同的运行号(缺失号)的列?

时间:2019-06-17 08:15:09

标签: mysql select myisam

[我的示例表]

[user_table]
+------------------------------------------+
|   id   |   ref_id  |   name   |   ....   |
+------------------------------------------+
|   1    |     0     |   John   |   ....   |
|   2    |     1     |   James  |   ....   |
|   3    |     2     |   Jinny  |   ....   |
|   4    |     3     |   Jose   |   ....   |
|   5    |     4     |   Joe    |   ....   |
|   6    |     5     |   Joy    |   ....   |
|   7    |     8     |   Joey   |   ....   |
|   8    |     11    |   Jimmy  |   ....   |
|   9    |     12    |   Jacky  |   ....   |
|   10   |     13    |   Jung   |   ....   |
+------------------------------------------+

上面是一个简单的数据,我想在列ref_id中缺少数字,因此,丢失数字是6, 7, 9 and 10

我想要MySQL一些查询代码来获取它。

[期望结果]

+------------+
|   result   |
+------------+
|     6      |
|     7      |
|     9      |
|     10     |
+------------+

2 个答案:

答案 0 :(得分:0)

  1. 使用所有可能的数字创建一个名为numbers的表。
  2. 执行SELECT ... FROM numbers LEFT JOIN your_table ON ... WHERE ... IS NULL来查找丢失的行

答案 1 :(得分:-1)

您可以在同一张表上用LEFT JOIN进行操作,而SELECT仅使用第二个NULL值对。

SELECT u1.id as result
FROM user_table u1
LEFT JOIN user_table u2 ON u1.id = u2.ref_id
WHERE u2.id IS NULL

更新

您可以测试HERE

我的解决方案在两种情况下均有效。