我经常看到类似的东西...
SELECT events.id, events.begin_on, events.name
FROM events
WHERE events.user_id IN ( SELECT contacts.user_id
FROM contacts
WHERE contacts.contact_id = '1')
OR events.user_id IN ( SELECT contacts.contact_id
FROM contacts
WHERE contacts.user_id = '1')
查询中可以有查询吗?是“内心的询问”吗? “子查询”?它算作三个查询吗(我的例子)?如果这样做不好......我该如何重写我的例子?
你的例子还不错。最大的问题通常来自所谓的“相关子查询”的情况。此时子查询依赖于外部查询中的列。这些特别糟糕,因为实际上需要为潜在结果中的每一行重新运行子查询。
您可以使用联接重写子查询和GROUP BY
,但性能可能会有所不同,尤其取决于您的 RDBMS。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)