Aks*_*hat 4 mysql select if-statement
嗨伙计们我想尝试做类似的事情
SELECT * from accounttable, peopletable, companytable
WHERE if accounttable.account_type = company
JOIN companytable
WHERE companytable.id = accounttable.company_id
ELSE IF accounttable.account_type = = person
JOIN peopletable
WHERE peopletable.id = accounttable.person_id
Run Code Online (Sandbox Code Playgroud)
对不起它有点sqlenglish但我真的不知道如何写出来!
Rom*_*ain 15
怎么样的:
SELECT *
from accounttable
left join peopletable ON (accounttype = 'person' AND peopletable.id = accounttable.person_id)
left join companytable ON (accounttype = 'company' AND companytable.id = accounttable.company_id)
Run Code Online (Sandbox Code Playgroud)
我将加入两个表,因此您将在输出中包含所有三个表的字段.来自的字段peopletable将是NULLif accounttype != 'person',而那些companytable将是NULLwhere accounttype != 'company'.
您可以LEFT JOIN在这里找到更多有关语法的语法...
SELECT a.*, p.*, c.* from accounttable a
LEFT JOIN peopletable p ON (a.person_id = p.id AND a.account_type = 'person')
LEFT JOIN companytable c ON (a.company_id = c.id AND a.account_type = 'company')
Run Code Online (Sandbox Code Playgroud)
请注意,a,p,c是完整表名的别名,这样可以节省输入.
此查询将为行中的所有nullp.*或c.*提供所有内容.
您可以像这样重写选择部分:
SELECT
a.id, a.accounttype
, COALESCE(p.name, c.name) as name
, COALESCE(p.address, c.address) as address
....
FROM .....
Run Code Online (Sandbox Code Playgroud)
请参阅:http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce