Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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 在获取组id为奇数的人的姓名时遇到问题_Mysql - Fatal编程技术网

Mysql 在获取组id为奇数的人的姓名时遇到问题

Mysql 在获取组id为奇数的人的姓名时遇到问题,mysql,Mysql,我必须找到星期五出生的人的名字,他们的名字以A或S开头,他们的group\u id很奇怪 我编写了以下查询 SELECT * FROM student WHERE (group_id %2 ) = 1 AND student_name LIKE ("S%") OR student_name LIKE("A%") AND DAYOFWEEK(date_of_birth) = 6; 但是出现了一个偶数组id,我不明白为什么?附上条件: student_name

我必须找到星期五出生的人的名字,他们的名字以
A
S
开头,他们的
group\u id
很奇怪

我编写了以下查询

    SELECT * FROM student 
    WHERE (group_id %2 ) = 1 
    AND student_name LIKE ("S%") OR student_name LIKE("A%") 
    AND DAYOFWEEK(date_of_birth) = 6;

但是出现了一个偶数
组id
,我不明白为什么?

附上条件:

student_name LIKE ("S%") OR student_name LIKE("A%")
((group_id%2)=1 AND student_name LIKE ("S%")) 
OR 
(student_name LIKE("A%") AND DAYOFWEEK(date_of_birth) =6)
在括号内,因为
运算符的值低于
运算符,所以您的
WHERE
子句实际上设置了以下条件:

student_name LIKE ("S%") OR student_name LIKE("A%")
((group_id%2)=1 AND student_name LIKE ("S%")) 
OR 
(student_name LIKE("A%") AND DAYOFWEEK(date_of_birth) =6)
因此,请改为:

SELECT * FROM student 
WHERE (group_id%2)=1 
  AND (student_name LIKE ("S%") OR student_name LIKE("A%")) 
  AND DAYOFWEEK(date_of_birth) =6 ;

子句需要括号

SELECT * FROM student 
WHERE (group_id%2)=1 
AND (student_name LIKE ("S%") OR student_name LIKE("A%")) 
AND DAYOFWEEK(date_of_birth) =6 ;
如果没有这些,它会搜索有问题的学生

  • 奇数组id和名称以
    A
    开头
  • 或学生姓名以
    S
    开头(其中组id可以是任何内容)

您的
sql
查询应将条件包含在
()
中,以获得条件优先权:

SELECT * FROM student WHERE (group_id%2)=1 
AND (student_name LIKE ("S%") OR student_name LIKE("A%")) 
AND DAYOFWEEK(date_of_birth) =6 ;
你是说。。和(学生名如(“S%”)或学生名如(“A%”)?