我想在列中选择数据,但列值不等于''和值='NA'。在我的表中,某些列是空的。我想过滤所有非空列,列有数据值!='NA'。
如何为此要求编写查询。
我在表中有200列,因此我无法逐个列名称。是否有column_name的关键字?
答案 0 :(得分:1)
select * from table where columnName!='' and columnName!='NA'
或者如果你也不需要NULL
select * from table where columnName!='' and columnName!='NA' and columnName is not null
答案 1 :(得分:1)
SELECT data FROM columns WHERE value = 'NA'
value = 'NA'
取代空值的列。
答案 2 :(得分:1)
SELECT *
FROM table
WHERE `VALUE` NOT IN ('', 'NA');
答案 3 :(得分:1)
这是必须的:
SELECT * FROM myTable WHERE VALUES <> 'NA' AND VALUES <> ''.
答案 4 :(得分:1)
您可能正在寻找动态查询,尤其是在具有相同条件的查询中涉及许多列的情况下。
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
答案 5 :(得分:0)
SELECT * FROM table WHERE 'VALUE' NOT IN ('', 'NA');
我必须在VALUE附近插入单引号