繁体   English   中英

MySQL在LEFT JOIN条件下从别名的结果中选择数据

[英]mysql select data from result of alias name on LEFT JOIN condition

SELECT e.`event_type`,e.`event_status`,er.`event_reg_id`,er.`event_id`,'events' as category, 
    IF(e.`event_type`='C',e.`parent_id` ,IF(e.`event_type`='S',er.`event_id`,'') ) temp_id  
FROM `event_registration` er
    LEFT JOIN event e on er.`event_id`= temp_id WHERE er.`company_id`='%s' AND er.`student_id`='%S'

我将temp_id作为别名,并将其设置为LEFT JOIN ON条件,它不起作用。 我在LEFT JOIN ON条件下给了别名而不是列名

您不能在查询的ON部分使用temp_id别名。 别名在那里不可用。 但是您可以执行以下操作,将嵌套的IF移到ON部分:

SELECT
    e.`event_type`,
    e.`event_status`,
    er.`event_reg_id`,
    er.`event_id`,
    'events' AS category, 
    IF(e.`event_type` = 'C', e.`parent_id`, IF(e.`event_type` = 'S', er.`event_id`,'')) AS temp_id, 
FROM `event_registration` er
    LEFT JOIN event e ON er.`event_id`= IF(e.`event_type` = 'C', e.`parent_id`, IF(e.`event_type` = 'S', er.`event_id`,'')) 
WHERE er.`company_id` = '%s' AND er.`student_id` = '%S'

您不能使用SELECT的别名,因为FROM部分是较早执行的( 请参见StackOverflow上的此答案 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM