提问人:sheetal singh 提问时间:12/4/2022 最后编辑:sheetal singh 更新时间:12/4/2022 访问量:43
WHILE 条件在 MYSQL 查询中无法正常工作?
WHILE conditions are not working properly in MYSQL query?
问:
我正在通过自我练习来学习MySQL。在一个项目中,我想使用 MySQL (phpMyAdmin) 创建一个传输模块。不幸的是,WHERE 条件运行不佳。我使用 XAMPP 应用程序执行查询。查询的一部分是 -
SELECT
*
FROM
(SELECT
`emp_id`,
`emp_name`,
`present_posting`,
`curr_zone`,
`office_ID1` AS `new_office`,
`Zone1` AS `new_zone`,
`office_ID1` AS `C1`,
`post`,
`preference`,
`curr_zone_id`
FROM
`transfer_applications`
WHERE
`Mutual Accepted` != 'Mutual Accepted'
ORDER BY `apID` ASC) `aa`
LEFT JOIN
(SELECT
`zone_ID`, `ZONE`, `office_ID`, `office_Vacancy`
FROM
`vacancy`) `ab` ON `aa`.`C1` = `ab`.`office_ID`
LEFT JOIN
(SELECT
`zid`, `max_min_vacancy`
FROM
`capping_vacancy`) `ac` ON `aa`.`new_zone` = `ac`.`zid`
WHERE
((`curr_zone_id` != `new_zone`
AND (`max_min_vacancy` < 150
AND `max_min_vacancy` > 1)
AND `station_Vacancy` > 0
AND `post` = 4
AND `apID` = x + 1)
OR (`curr_zone_id` = `new_zone`
AND `station_Vacancy` > 0))
问题在于,即使没有可用的空缺,它也允许转移,即WHERE(>1)中的最小上限不起作用。我无法找出它跳过此条件而 WHERE 中的所有其他条件都正常工作的原因。请帮我找出错误。谢谢。max_min_vacancy
答:
0赞
JHH
12/4/2022
#1
该子句由 连接,因此,如果第一个布尔表达式为 FALSE(即.max_min_vacancy <=1),则只要第二个布尔表达式返回 TRUE,它仍然是 TRUE。WHERE
OR
...
WHERE
(
(
`curr_zone_id` != `new_zone` AND
(
`max_min_vacancy` < 150 AND
`max_min_vacancy` > 1 -- if max_min_vacancy <= 1 --> FALSE
) AND
`station_Vacancy` > 0 AND
`post` = 4 AND
`apID` = x + 1
)
OR ( -- But this condition is TRUE
`curr_zone_id` = `new_zone` AND
`station_Vacancy` > 0
)
)
评论
0赞
sheetal singh
12/4/2022
是的,因为我只想为跨区域转移设置上限,但谢谢,因为我因为你的回答而引起了我错的地方的关注。再次感谢。
评论