Mysql SQL联接变量
我有桌子: 任务Mysql SQL联接变量,mysql,Mysql,我有桌子: 任务 身份证 名字 描述 家长id 父类型 帐目 身份证 名字 引导 身份证 名字 我的查询看起来很有效 SELECT tasks.name,date_due, tasks.description, accounts.name FROM tasks JOIN accounts on tasks.parent_id = accounts.id WHERE DATE(date_due) = DATE(NOW() + INTERVAL 1 DAY) AND tasks.ass
- 身份证
- 名字
- 描述
- 家长id
- 父类型
- 身份证
- 名字
- 身份证
- 名字
SELECT tasks.name,date_due, tasks.description, accounts.name FROM tasks
JOIN accounts
on tasks.parent_id = accounts.id
WHERE DATE(date_due) = DATE(NOW() + INTERVAL 1 DAY) AND tasks.assigned_user_id=1
我需要的是将账户
设置为一个变量-它可以是账户,也可以是潜在客户,具体取决于任务。父类型
值
如何做到这一点有什么建议吗
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来动态调整表名:例如:
executeimmediate concat(“select*from”,@table_name,“其中a=”,@val)代码>已找到
但是,我要提醒您注意这种方法,因为它会受到SQL注入机会的影响,而没有为传入变量设置适当的控件
或者,如果您知道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来动态调整表名:例如:
executeimmediate concat(“select*from”,@table_name,“其中a=”,@val)代码>已找到
但是,我要提醒您注意这种方法,因为它会受到SQL注入机会的影响,而没有为传入变量设置适当的控件