假设我有一个TABLE a,其中aCOLUMN data是要 加入 另外2个表(TABLE b和TABLE c)的一个COLUMNinfo,因为我想获得inb或c。 事情是a.data将匹配 只 用b.data 或只能 用c.data。
TABLE a
COLUMN data
TABLE b
TABLE c
COLUMNinfo
b
c
a.data
b.data
c.data
b.info
c.info
a
经过多次尝试使用明显错误的语法后,我所做的最好的事情是在两个查询中:
SELECT b.info FROM a INNER JOIN b ON a.data = b.data SELECT c.info FROM a INNER JOIN c ON a.data = c.data
我想实现一些可能看起来像这样的东西:
SELECT alias.info FROM a INNER JOIN (b OR c) AS alias ON a.data = alias.data
实际上,我可以获取所需的数据并使用PHP进行处理。但是我要进行一个庞大的过程(与我的问题无关),而不是进行良好的查询,并且该页面需要太多时间来加载。
您可以将,b和c表都保留为联接,然后使用info不是的任何字段NULL:
info
NULL
select coalesce(b.info, c.info) info from a left join b on a.data = b.data left join c on a.data = c.data