正如您在上面的打印屏幕中看到的那样,我想知道,是否可以一次检查两个表中是否有一个东西如果找到整个行(逻辑1)。没有进行2次查询。如果“fajne-to-jest”在table1或table2中,我需要查看,然后获取数据行。我在2个查询中执行此操作...但问题是,是否可以使用一个查询检查此信息? Mabye别的什么?最有效的方式?最好的方法?
@Gordon Linoff给了我这个:
select (exists (select 1 from table1 where url = 'fajne-to-jest')) as in_table1,
(exists (select 1 from table2 where url = 'fajne-to-jest')) as in_table2;
答案 0 :(得分:2)
这是对此的快速抨击,尚未对其进行测试:
select
IF(table1.id IS NULL, 0, 1) as table1,
IF(table2.id IS NULL, 0, 1) as table2,
COALESCE(table1.id, table2.id, "NONE") as id,
`master`.url
from
(select 'fajne-to-jest' as url) `master`
left join table1 on table1.url = `master`.url
left join table2 on table2.url = `master`.url
;
总是应该给出一行,无论是在0,1还是两个表中找到它们。你说url是唯一的,所以不需要担心重复,但如果ID不匹配,那么这有利于table1(如果不在任何一个表中,则打印“NONE”)。