将查询合并为子查询

时间:2018-07-10 12:39:24

标签: mysql sql

我有2个连接正在执行相同的操作(从导航链接表获取信息以将标题动态添加到导航栏)。目前,我想知道如果我需要添加两个以上的导航链接,这将意味着进一步的麻烦,我不想继续为每个select语句添加一个联合。

SELECT header_title
FROM navlinks 
INNER JOIN who_we_are ON navlinks.id = who_we_are.navlinkid
UNION
SELECT header_title 
from navlinks 
INNER JOIN contactpage ON navlinks.id = contactpage.navlinks_id

1 个答案:

答案 0 :(得分:1)

您可以尝试使用LEFT JOINcoalesce函数。

SELECT distinct coalesce(who_we_are.header_title,contactpage.header_title,null)
FROM navlinks 
LEFT JOIN who_we_are ON navlinks.id = who_we_are.navlinks_id
LEFT JOIN contactpage ON navlinks.id = contactpage.navlinks_id
WHERE coalesce(who_we_are.header_title,contactpage.header_title,null) is not null

sqlfiddle:http://sqlfiddle.com/#!9/9d5c85/2