2015-08-25 3 views
-5

Мне нужно написать запрос, чтобы узнать набор недостающих чисел в заданной последовательности .Как написать запрос, чтобы найти недостающий номер?

Например, столбец в таблице имеет следующие данные:

Col1 
1 
2 
3 
4 
5 
6 
10 

Здесь мне нужно написать запрос, чтобы выяснить недостающие числа и перечислить его так:

Col1 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 

Я пробовал это

select l.IDBANK + 1 as start 
from _bank as l 
    left outer join _bank as r on l.IDBANK + 1 = r.IDBANK 
where r.IDBANK is null 
ORDER by 1 

Однако в нем отображается только первое недостающее число в списке. Как я могу это исправить?

+0

Вы хотите захватить данные, искать и заполнить столбец отсутствующим материалом? – Mubin

+0

вы можете немного объяснить .. вам нужны недостающие числа или все номера с отсутствующим? .. и опубликовать то, что вы пробовали – Sarath

+4

* «Мне нужно написать запрос ...» * - Вы имеете в виду * «Мне нужно ** вы **, чтобы написать запрос ...» * –

ответ

0

Я предлагаю вам сравнить данные с двумя таблицами, позволяет сказать, что у вас есть TABLEA и TableB и сравнить согласование и удаление информации элементов, вы могли бы сделать что-то вроде этого:

select a.Col1, b.Col1 
from TableA a 
left join TableB b on a.Col1 = b.Col1 

и если вы хотите, чтобы фильтр для показать только те элементы, которые находятся в TableA, но не в TableB, вы могли бы добавить что-то вроде этого:

where b.Col1 is not null 
+0

Нет, это не работает для меня cuz. Я хочу отобразить все номера, включая отсутствующий – Newlife

+0

, если вы удалите предложение where, у вас будут все номера, включая недостающие – simdrouin

2

Предположим, есть таблица tbl_student.

Структура таблицы выглядит так:

enter image description here

Так вот некоторые недостающие номера рулона. Если вы хотите получить эти номера рулонов, используйте этот запрос:

// Database connection code here. 
$i=0; 
$statement = $pdo->prepare("SELECT * FROM tbl_student"); 
$statement->execute(); 
$result = $statement->fetchAll(PDO::FETCH_ASSOC); 
foreach($result as $row) 
{ 
    $arr1[$i] = $row['roll']; 
    $i++; 
} 
$arr2 = range(1,max($arr1));              
$missing_numbers = array_diff($arr2,$arr1); 
echo $missing_numbers; 

Я думаю, что этот код вам поможет. Сообщите мне, пожалуйста, если это сработает.

+0

Я не работаю с php5 – Newlife

Смежные вопросы