在同一查询中组合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)
完全按照伪代码中的方式执行。在()
内将两个条件组合在一起。