是否可以使用JOIN重写以下SQL查询或以其他方式提高效率? 我可能正在使用SQLite(我可以连接到几个不同的数据库),这意味着我不能使用RIGHT JOIN(s)。下面查询中的省略号(...)表示我可以在那里拥有多个UNION。
我以编程方式构造此查询,因为在我的情况下没有其他方法。我只是试图了解如何重写它以提高效率。有任何想法吗 ? 提前谢谢。
SELECT serial_nr, name, cert_type FROM certificates WHERE (cert_type<3 AND
serial_nr IN
(
SELECT DISTINCT serial_nr FROM certificates WHERE (cert_type<3 AND (name LIKE 'george%' ))
UNION
SELECT DISTINCT serial_nr FROM ip_addresses WHERE ((address LIKE '192.168%' ))
....
));
答案 0 :(得分:1)
尝试这样的事情;
SELECT serial_nr, name, cert_type FROM certificates A
inner join certificates B on A.serial_nr=B.serial_nr and B.name like'george%'
inner join ip_address C on A.serial_nr=C.serial_nr and C.Address like '192.168%'
...
WHERE A.cert_type<3