Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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,看看我的下表,我正在试着数一数表中的A。A只会出现在一行中,但有时会出现在第一列中,有时会出现在另一列中,所以我使用OR,但它回显的数字大于3,我只有3 A,为什么?我怎么能只数到3 A "SELECT COUNT(*) FROM $table WHERE first='A' OR second='A' OR third='A' AND number <= 7" id first second third number 1 A C B 3 2

看看我的下表,我正在试着数一数表中的A。A只会出现在一行中,但有时会出现在第一列中,有时会出现在另一列中,所以我使用OR,但它回显的数字大于3,我只有3 A,为什么?我怎么能只数到3 A

"SELECT COUNT(*) FROM $table WHERE first='A' OR second='A' OR third='A' AND number <= 7"

id  first  second third  number
1     A      C      B      3
2     C      d      F      5
3     A      c      b      6
4     B      A      c      7

试试这段代码,我相信你一定会得到正确的计数

你要做正确的事情只需要做两件事:

将条件合并到括号中 为MYSQL关键字添加背景标记第二个是MYSQL关键字 修改的查询:

如果发生的错误多于一行,请尝试此操作:

select sum(if(first = 'A',1,0)+if(second = 'A',1,0)+if(third = 'A',1,0)) as count
from $table where number <= 7;

SQL Fiddle:

听起来好像你想要第一个class='A'或第二个class='A'或第三个class='A'和数字的位置,或者第一个、第二个、第三个中的'A'如何?@shmosel我认为括号中的参数必须是一个值,而不是列名。如果我错了,请纠正我。@Engineer先生,你确实错了。A是否可能在一行中出现两次或两次以上?
SELECT 
(select count(*) from tablename where first LIKE '%A' and number<=7)
+
(select count(*) from tablename where second LIKE '%A' and number<=7)
+
(select count(*) from tablename  where third LIKE '%A' and number<=7);
"SELECT COUNT(*) FROM $table 
WHERE (`first` = 'A' OR `second` = 'A' OR `third` = 'A') 
AND `number` <= 7"
select sum(if(first = 'A',1,0)+if(second = 'A',1,0)+if(third = 'A',1,0)) as count
from $table where number <= 7;