MySQL выбрать другой номер (пропущенный номер) столбца? - PullRequest
0 голосов
/ 17 июня 2019

[таблица моего примера]

[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 голосов
/ 18 июня 2019
  1. Создайте таблицу под названием numbers со всеми возможными числами.
  2. Сделайте SELECT ... FROM numbers LEFT JOIN your_table ON ... WHERE ... IS NULL, чтобы найти пропущенные строки
0 голосов
/ 17 июня 2019

Вы можете сделать это с 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

Обновление :

Вы можете проверить ЗДЕСЬ .

Мое решение работает в обоих случаях.

...