通过在MySQL/PHP表中假设列来设置值
我有一个包含8列和以下值的表通过在MySQL/PHP表中假设列来设置值,php,mysql,Php,Mysql,我有一个包含8列和以下值的表 12345678 01 0 0 0 0 0 我需要一个查询,该查询将分析列中1和0的编号,如果0的编号大于4,则应打印failed else pass,我如何才能做到这一点?通过MYSQL或PHP?可能不是很整洁,但是您可以使用如下查询来计算0的数量(假设您的列名为1,2,等等): SELECT IF(`1` = 0, 1, 0) + IF(`2` = 0, 1, 0) + IF(`3` = 0, 1, 0) + IF(`4
12345678
01 0 0 0 0 0
我需要一个查询,该查询将分析列中1和0的编号,如果0的编号大于4,则应打印failed else pass,我如何才能做到这一点?通过MYSQL或PHP?可能不是很整洁,但是您可以使用如下查询来计算0的数量(假设您的列名为
1
,2
,等等):
SELECT IF(`1` = 0, 1, 0) +
IF(`2` = 0, 1, 0) +
IF(`3` = 0, 1, 0) +
IF(`4` = 0, 1, 0) +
IF(`5` = 0, 1, 0) +
IF(`6` = 0, 1, 0) +
IF(`7` = 0, 1, 0) +
IF(`8` = 0, 1, 0) NoOfZeros
FROM your_table;
测试用例:
CREATE TABLE your_table (`1` int, `2` int, `3` int, `4` int,
`5` int, `6` int, `7` int, `8` int);
INSERT INTO your_table VALUES (1, 0, 1, 0, 1, 0, 1, 0);
结果:
+-----------+
| NoOfZeros |
+-----------+
| 4 |
+-----------+
1 row in set (0.00 sec)
您可以从PHP运行此查询,并在结果集中的NoOfZeros
字段大于4时显示所需的错误消息。在'1`+'2`+'3`+'4`+'5`+'6`+'7`+'8`<4时选择大小写,然后选择'Failed'或'Passed'结束
SELECT CASE WHEN `1`+`2`+`3`+`4`+`5`+`6`+`7`+`8` < 4 THEN 'Failed' ELSE 'Passed' END
FROM test_table;
从测试表;
这就是答案,我还需要知道一件事,如果(3
=0,1,0),这意味着什么?@Alex:这意味着:如果第3列等于0,则返回1,否则返回0。然后我们将所有这些返回值相加。这就是我们计算零的方法。这也是正确的,但由于Daniel首先给了我答案,我会将他的答案打勾为正确,但我会在我的程序中使用你的方法是的,这也是一个聪明的解决方案,假设列为只撕开1和0。+1