在同一查询中组合MySQL和OR语句

在同一查询中组合MySQL和OR语句,mysql,sql,Mysql,Sql,以下是我当前正在运行的查询: $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'

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

$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”结尾,并以“312”结尾(具有roleid 5或roleid 15)

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

最简单的是

SELECT *
FROM tableName
WHERE columnName LIKE 'ICV%312' AND
      roleID IN (5,15)

您可以在操作符中使用

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)
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)
或者如果您确实需要
操作员:

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)
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)

完全按照伪代码中的方式执行。在
()
内将两个条件组合在一起。