[我的示例表]
[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 |
+------------+
- 创建一个表,称为
numbers
,其中包含所有可能的数字。 - 执行
SELECT ... FROM numbers LEFT JOIN your_table ON ... WHERE ... IS NULL
以查找缺少的行
您可以使用同一表上的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
更新:
你可以测试这里。
我的解决方案在这两种情况下都有效。