Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过在MySQL/PHP表中假设列来设置值_Php_Mysql - Fatal编程技术网

通过在MySQL/PHP表中假设列来设置值

通过在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

我有一个包含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` = 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