如何在mysql中的列中引用数据

时间:2013-06-11 05:35:28

标签: mysql

我想在列中选择数据,但列值不等于''和值='NA'。在我的表中,某些列是空的。我想过滤所有非空列,列有数据值!='NA'。

如何为此要求编写查询。

我在表中有200列,因此我无法逐个列名称。是否有column_name的关键字?

6 个答案:

答案 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)

您可能正在寻找动态查询,尤其是在具有相同条件的查询中涉及许多列的情况下。

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

答案 5 :(得分:0)

SELECT * FROM table WHERE 'VALUE' NOT IN ('', 'NA');我必须在VALUE附近插入单引号