设置查询的常用方法
SELECT * from ____ WHERE (Column1>0) and ____
就像问“什么是column1值> 0和column2 .....的记录?”
但是现在我想做相反的事情,
“对于此记录,值大于0的列是什么?”
给定指定记录ID的情况下,如何编写查询以返回列名称(如果列值满足条件)?有非整数列,应忽略。
编辑:我的表包含许多只接受值0或1的列。我想先通过一些约束将ID随机化,例如
SELECT id from ____ WHERE Views>5000 and Q1=1 and Q3=1
然后进行随机化,然后显示并显示哪些列= 1。
“结果:ID:_。视图:__。存在Q1,Q3,Q6,Q14,Q38,Q45,Q56。(= 1)”
现在,从答案看来,我似乎必须逐列检查,而不是使用自动检查所有列的函数,因此我认为无论是使用SQL还是通过PHP进行后处理,方法都必须相同。我只是希望某种函数可以做到这一点,而不是编写循环。
您可以为每个列基于CASE WHEN或IF构建字符串,如果该值大于0,则应进行验证。
例如:
CREATE TABLE test_tbl( id INT NOT NULL AUTO_INCREMENT, col1 INT, col2 INT, col3 INT, PRIMARY KEY ( id ) ); insert into test_tbl (col1,col2,col3) values (0,0,0), (8,0,0), (8,null,8), (8,8,8); select *, TRIM(TRAILING ',' FROM concat( if(col1 > 0,'col1,',''), case when col2 > 0 then 'col2,' else '' end, if(col3 > 0,'col3,','') ) ) as bigger_than_0 from test_tbl where (col1>0 or col2>0 or col3>0);
给出:
id col1 col2 col3 bigger_than_0 2 8 0 0 col1 3 8 null 8 col1,col3 4 8 8 8 col1,col2,col3