使用"OR"和"AND"mysql php

Dan*_*ern 13 php mysql

我有一个MySQL查询,我想得到一个值,可以说m是'x','y'或'z'以及另外两个需要精确值的变量.我不知道怎么写这个.

我不知道你是否明白这个想法,但这就是我所拥有的:

SELECT * FROM respuestas 
WHERE id_curso = '155' OR id_curso = '156' OR id_curso= '157' OR id_curso= '158' 
AND id_pregunta='1' AND respuesta>=0
Run Code Online (Sandbox Code Playgroud)

所以,我需要id_curso155156157158并在同一时间,id_pregunta= 1respuesta> 0.

我知道这不是写它的方式,但我不知道正确的方法.

Emi*_*röm 29

试试这个:

WHERE
  id_curso IN('155', '156', '157', '158') AND
  id_pregunta = '1' AND
  respuesta >= 0
Run Code Online (Sandbox Code Playgroud)

或者,如果您更喜欢冗长的方式,请使用括号:

WHERE
  (id_curso = '155' OR
   id_curso = '156' OR
   id_curso = '157' OR
   id_curso = '158') AND
  id_pregunta = '1' AND
  respuesta >= 0
Run Code Online (Sandbox Code Playgroud)

如果id_curso是一个整数(由于你使用了引号,它似乎不是你的查询,但无论如何都是这样),你甚至可以使用BETWEEN关键字来选择一系列值:

WHERE
  (id_curso BETWEEN 155 AND 158) AND
  id_pregunta = '1' AND
  respuesta >= 0
Run Code Online (Sandbox Code Playgroud)

  • 对于`IN`来说,我认为这是一种更好的写作方式. (3认同)

jer*_*oen 8

您需要对OR语句进行分组,以便它们形成一个条件:

SELECT * FROM respuestas WHERE (id_curso= '155' OR id_curso= '156' OR id_curso= '157' OR id_curso= '158') AND id_pregunta='1' AND respuesta>=0
Run Code Online (Sandbox Code Playgroud)