簡體   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