2

这是我当前正在运行的查询:

$result = R::getAll("SELECT * FROM vw_participantes_curso JOIN vw_cursos ON vw_participantes_curso.id = vw_cursos.id_curso where LEFT(vw_cursos.sigla, 3) = 'ICV' AND RIGHT(vw_cursos.sigla, 3) = '312' AND username = :u", 
    array(':u' => $username)
);

用简单的英语,查询内容如下:

给我找一个学生,该学生正在学习以“ICV”开头并以“312”结尾的课程。

现在我需要在同一个查询中添加一个 or 语句,因此它显示为:

给我找一个学生,该学生的课程以“ICV”开头,“312”结尾,并且(具有roleid 5roleid 15)。

你如何在 MySQL 中格式化这样的嵌套条件?

4

2 回答 2

1

您可以使用in运算符:

SELECT * 
FROM vw_participantes_curso 
JOIN vw_cursos 
ON vw_participantes_curso.id = vw_cursos.id_curso 
where LEFT(vw_cursos.sigla, 3) = 'ICV' 
AND RIGHT(vw_cursos.sigla, 3) = '312' 
AND username = :u
AND roleid in (5,15)

或者如果你真的想要or运营商:

SELECT * 
FROM vw_participantes_curso 
JOIN vw_cursos 
ON vw_participantes_curso.id = vw_cursos.id_curso 
where LEFT(vw_cursos.sigla, 3) = 'ICV' 
AND RIGHT(vw_cursos.sigla, 3) = '312' 
AND username = :u
AND (roleid = 5 or roleid = 15)
于 2012-11-16T14:19:58.583 回答
0

最简单的将是

SELECT *
FROM tableName
WHERE columnName LIKE 'ICV%312' AND
      roleID IN (5,15)
于 2012-11-16T14:19:39.567 回答