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注入机会的影响,而没有为传入变量设置适当的控件