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条件下给了别名而不是列名
答案 0 :(得分:0)
您不能在查询的temp_id
部分使用ON
别名。别名在那里不可用。但是您可以执行以下操作,将嵌套的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
部分执行得较早(see this answer on StackOverflow)。