SELECT tasks.name,date_due, tasks.description,
CASE WHEN parent_Type = 1 then
accounts.name
WHEN parent_Type=2 then
leads.name
END as Name
FROM tasks
LEFT JOIN accounts
on tasks.parent_id = accounts.id
LEFT JOIN leads
on leads.id = tasks.parent_ID
WHERE DATE(date_due) = DATE(NOW() + INTERVAL 1 DAY) AND tasks.assigned_user_id=1
或者如果你知道ID不會在兩個表中的一個表中coalease會工作。 Coalease在一系列中取第一個非空值。
SELECT tasks.name,date_due, tasks.description,
coalesce(accounts.name, leads.name) as Name
FROM tasks
LEFT JOIN accounts
on tasks.parent_id = accounts.id
LEFT JOIN leads
on leads.id = tasks.parent_ID
WHERE DATE(date_due) = DATE(NOW() + INTERVAL 1 DAY) AND tasks.assigned_user_id=1
否則動態SQL已被寫入到調整上飛一個表名:其中的一個例子是: EXECUTE IMMEDIATE concat("select * from ", @table_name, " where a=", @val);
如發現http://dev.mysql.com/worklog/task/?id=2793。
但是,我會提醒你這種方法,因爲它受到SQL注入機會,而沒有適當的控制傳入變量。