Sqlite 如何查询一个表中的值在其他表中是否有对应的条目
我正在尝试编写一个查询,该查询将检查一个表中的值是否在其他表中有任何对应的条目。我有以下方法,但有没有更快的方法?也许使用exists()函数 为了澄清,这将在sqlite中进行。此外,我需要制造商中每一行的值,以及它是否在任何其他表中有条目Sqlite 如何查询一个表中的值在其他表中是否有对应的条目,sqlite,Sqlite,我正在尝试编写一个查询,该查询将检查一个表中的值是否在其他表中有任何对应的条目。我有以下方法,但有没有更快的方法?也许使用exists()函数 为了澄清,这将在sqlite中进行。此外,我需要制造商中每一行的值,以及它是否在任何其他表中有条目 select tM.val, min(t1.val) as MakesCars, min(t2.val) as MakesTrucks, min(t3.val) as MakesVans from tableManufactures tM left
select tM.val, min(t1.val) as MakesCars, min(t2.val) as MakesTrucks,
min(t3.val) as MakesVans from tableManufactures tM
left join tableCars t1 on tM.id = t1.Manid
left join tableTrucks t2 on tM.id = t2.Manid
left join tableVans t3 on tM.id = t3.Manid
group by tM.val
order by tM.val
结果如下所示:
Manufacturer MakesCars MakesTrucks MakesVans
Ford 85 15 20
Chevy 72 12 NULL
Mazda 42 NULL NULL
因此,任何值都表示它们确实这样做了,null表示它们没有这样做 对于连接,数据库必须查找所有匹配的记录,其中大部分记录由于min()而被删除 使用EXISTS确实可能更有效:
SELECT val,
EXISTS (SELECT 1
FROM tableCars
WHERE Manid = tM.id) AS MakesCars,
EXISTS (SELECT 1
FROM tableTrucks
WHERE Manid = tM.id) AS MakesTrucks,
EXISTS (SELECT 1
FROM tableVans
WHERE Manid = tM.id) AS MakesVans
FROM tableManufactures AS tM
ORDER BY val
这是什么RDBMS??您需要仅存在于所有三个表和tableManufactures中的值,还是存在于tableManufactures和三个表中的任何一个表中的值?