基于select的值,我可以在MySQL查询中的where_上使用IF或CASE吗

基于select的值,我可以在MySQL查询中的where_上使用IF或CASE吗,mysql,Mysql,好的,基本上我需要的是一个不同的WHERE_IN子句,它基于同一个表中一列的值,因此是同一个查询 请看下面的查询。r.assigned_类型为1或2,我需要在子句中使用r.assigned_id 我能做这个吗 SELECT `r`.`risk_id`, `r`.`assigned_type`, `r`.`risk_type_id`, `r`.`risk_name`, `r`.`next_review`, `r`.`last_review`, `r`.`status`, `a`.`area_nam

好的,基本上我需要的是一个不同的WHERE_IN子句,它基于同一个表中一列的值,因此是同一个查询

请看下面的查询。r.assigned_类型为1或2,我需要在子句中使用r.assigned_id

我能做这个吗

SELECT `r`.`risk_id`, `r`.`assigned_type`, `r`.`risk_type_id`, `r`.`risk_name`, `r`.`next_review`, `r`.`last_review`, `r`.`status`, `a`.`area_name`, `u`.`first_name`, `u`.`last_name`
FROM `risk_assessments` `r`
LEFT JOIN `users` `u` ON `u`.`id` = `r`.`assigned_id`
LEFT JOIN `areas` `a` ON `a`.`area_id` = `r`.`assigned_id`
WHERE `r`.`org_id` = '3'
AND `r`.`risk_type_id` = '1'
AND `r`.`assigned` = '1'
AND `u`.`privilege_level` <= '7'
AND `r`.`assigned_id` IN('5', '10', '11', '12', '13', '14', '15')
OR `r`.`assigned_id` IN('9', '14')  
选择`r`.`risk\u id`、`r`.`assigned\u type`、`r`.`risk\u id`、`r`.`risk\u name`、`r`.`next\u review`、`r`.`last\u review`、`r`.`status`、`a`.`area\u name`、`u`.`first\u name`、`u`.`last\u name``
来自“风险评估”`r`
在'u'上左键连接'users''u'。'id'='r`.'assigned\u id`
左连接'a'上的'areas''a'。'area\u id`='r`.'assigned\u id``
其中'r`.'org\u id`='3'
和'r`.'risk\u type\u id`='1'
和'r'。'assigned`='1'

和'u`.'privilege_level`看起来您可以使用simple和/或加上一些括号,如:

SELECT `r`.`risk_id`, `r`.`assigned_type`, `r`.`risk_type_id`
FROM `risk_assessments` `r`
WHERE `r`.`org_id` = '3'
AND `r`.`assigned` = '1'
AND `u`.`privilege_level` <= '7'
AND ((`r`.`assigned_type` = 2
     AND `r`.`assigned_id` IN('5', '10', '11', '12', '13', '14', '15'))
     OR `r`.`assigned_id` IN('9', '14'))
选择`r`.`risk\u id`、`r`.`assigned\u type`、`r`.`risk\u type\u id``
来自“风险评估”`r`
其中'r`.'org\u id`='3'
和'r'。'assigned`='1'

和'u`.'privilege_level`看起来您可以使用simple和/或加上一些括号,如:

SELECT `r`.`risk_id`, `r`.`assigned_type`, `r`.`risk_type_id`
FROM `risk_assessments` `r`
WHERE `r`.`org_id` = '3'
AND `r`.`assigned` = '1'
AND `u`.`privilege_level` <= '7'
AND ((`r`.`assigned_type` = 2
     AND `r`.`assigned_id` IN('5', '10', '11', '12', '13', '14', '15'))
     OR `r`.`assigned_id` IN('9', '14'))
选择`r`.`risk\u id`、`r`.`assigned\u type`、`r`.`risk\u type\u id``
来自“风险评估”`r`
其中'r`.'org\u id`='3'
和'r'。'assigned`='1'

和'u`.'privilege\u level`mmm,我在'where子句'
中得到一个错误
未知列'r.assigned\u type',记住我正在选择assigned\u type,所以我没有将该值传递到查询中?我看起来像,“assigned\u type”是表r(风险评估)的一列?错误可能是由于缺少回跳造成的吗?我将它们添加到aswer中!先生,你是个传奇人物!嗯,我在where子句中得到一个错误
未知列'r.assigned\u type'
记得我正在选择assigned\u type,所以我没有将该值传递到查询中吗?我看起来像,“assigned\u type”是表r的一列(风险评估)?错误可能是由于缺少回跳造成的吗?我将它们添加到aswer中!先生,你是个传奇人物!