2014-01-30 3 views
1

У меня есть таблица MySQL db со столбцом, содержащим строки. И у меня есть список строк. Некоторые строки из списка можно найти в моей таблице, другие - нет. Смотрите мою таблицу TableName:MySQL: показать строки в результате, которые не были найдены

<TableName> 
IntegerColumn, StringColumn 
1, one 
2, two 
3, three 
4, four 

Если я выполнить запрос

SELECT * FROM TableName WHERE StringColumn NOT IN ('three', 'four', 'five', 'six'); 

я получаю результат двух строк, которые не содержат ничего, кроме NULL.
Как я могу видеть, какая из строк была no матч? Потому что я хочу, чтобы добавить их в таблицу БД

Thx заранее

+1

неясными. объясните правильно. –

+0

Что такое «список строк» ​​здесь? –

+0

Список строк: «три», «четыре», «пять», «шесть». –

ответ

0

Я думаю, что вы хотите, «три», «четыре», «пять», «шесть», если какой-либо из этой строки не присутствовать в базе данных, которую вы хотите определить.

Использование запроса Я думаю, что это будет сложно. Вы можете использовать нижеприведенный запрос, чтобы получить доступные строки и подсчеты. Затем, если вы используете язык программирования, вы можете определить, какая строка отсутствует в результате, а затем продолжить.

SELECT StringColumn, count(*) FROM TableName group by StringColumn 

Не уверен, что это то, что вы ищете.

+0

отметил это как ответ. и использование языка программирования - путь. –

1

Используя следующий образец

CREATE TABLE sample_table 
    (
id int auto_increment primary key, 
details varchar(30) 
); 

INSERT INTO sample_table 
(id, details) 
VALUES 
(1, 'One'), 
(2, 'Two'), 
(3, 'Three'), 
(4, 'Four'), 
(5, 'Five'); 

Я побежал запрос

SELECT * FROM sample_table 
WHERE details NOT IN ('two', 'three', 'nine'); 

, который дал правильный вывод:

1 One 
4 Four 
5 Five 

Если у вас есть NULL возвращается, то есть то, что вы не объясняете в своем вопросе. Можете ли вы предоставить информацию о схеме или даже SQL Fiddle, и я уверен, что вы получите гораздо лучший ответ.

0

Это не должно идти так. Проверьте следующее демо, чтобы убедиться, что ваш код верен. Теперь действительно имеет значение набор данных, присутствующих в таблице.

DEMO

Вот DDL:

create table tab1 (IntegerColumn int(2), StringColumn varchar(20)); 
insert into tab1 values(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four'); 
Смежные вопросы