2013-06-11 6 views
0

Я хочу выбрать данные в столбце, но значение столбца не равно '' и value = 'NA'. В моей таблице какой-то столбец пуст. Я хочу, чтобы все непустые столбцы и столбцы имели значение данных! = 'NA'.как передать данные в столбце в mysql

Как написать запрос для этого требования.

У меня есть 200 столбцов в таблице, так что я не могу ссылаться по одному имени столбца. Есть ли ключевое слово для column_name?

+0

ли вы не хотите, чтобы колонки на всех тех, кто имеет пустое или " NA 'или просто не хотите, чтобы строки содержали эти значения? – NINCOMPOOP

+0

Мне нужны только столбцы, у которых есть данные, кроме столбцов «NA» – wordpressm

ответ

1
select * from table where columnName!='' and columnName!='NA' 

или, если вам не нужен NULL, а

select * from table where columnName!='' and columnName!='NA' and columnName is not null 
1
SELECT data FROM columns WHERE value = 'NA' 

value = 'NA' заменяет столбцы с пустым значением.

1
SELECT * 
FROM table 
WHERE `VALUE` NOT IN ('', 'NA'); 
+0

Я получаю сообщение об ошибке «Неизвестный столбец» VALUE 'in' where clause'' – wordpressm

+0

после добавления «вокруг значения» он дает все столбцы, которые имеют «na». – wordpressm

+1

Убедитесь, что вы используете обратные ссылки, а не кавычки. Backticks предназначены для использования ключевых слов MySQL в качестве имен столбцов и таблиц, кавычки предназначены для создания строк. – Barmar

1

Это то, как это должно быть сделано:

SELECT * FROM myTable WHERE VALUES <> 'NA' AND VALUES <> ''. 
+0

- значение или столбец в правильном ключевом слове – wordpressm

+0

Отредактировано: его VALUE. – ikis

+0

Я получаю следующее сообщение об ошибке # 1054 - Неизвестное значение столбца ' – wordpressm

1

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

Working example on SQL Fiddle

create table t (
    col_1 varchar(10), 
    col_2 varchar(10), 
    col_3 varchar(10)); 

insert into t 
select 'NA', 'aa', 'aaa' union 
select 'b', 'bb', 'NA' union 
select '', 'cc', 'ccc' union 
select 'd', 'dd', 'dd' union 
select 'e', 'ee', '' union 
select 'f', 'ff', 'fff'; 



SET @q := null; 
SELECT @q := concat(coalesce(concat(@q, 'and '), ''), column_name, ' not in (''NA'', '''') ') 
FROM information_schema.columns 
WHERE table_name='t' and table_schema = DATABASE(); 
select @q := concat('select * from t where ', @q); 

-- select @q; 

PREPARE stmt FROM @q; 
EXECUTE stmt; 

возвращает:

COL_1 COL_2 COL_3 
d  dd  dd 
f  ff  fff 
0

SELECT * FROM table WHERE 'VALUE' NOT IN ('', 'NA'); мне пришлось вставить ни одного Quato Arround VALUE

+0

Я получаю следующее сообщение об ошибке # 1054 - Неизвестное значение столбца' – wordpressm

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