我基本上想要运行一个返回三个(成千上万个)表的查询,其中一个特定字段是唯一的。
我一直在努力解决这个问题,而且我不想通过三个单独的查询来解决这个问题。
SELECT * FROM (
(SELECT cat_1_id, title FROM Article WHERE cat_1_id = 1 LIMIT 1) AS a,
(SELECT cat_1_id, title FROM Article WHERE cat_1_id = 2 LIMIT 1) AS b,
(SELECT cat_1_id, title FROM Article WHERE cat_1_id = 3 LIMIT 1) AS c
)
是否算作一个查询或三个?
谢谢你,亲切的问候,
马修
答案 0 :(得分:6)
这是一个包含3个子查询的查询。但为什么不使用
SELECT cat_1_id, min(title) as title
FROM Article
WHERE cat_1_id in (1,2,3)
group by cat_1_id
答案 1 :(得分:0)
子查询是否是单独的查询?
排序。同样,连接也是子查询,因此是group /具有查询的一部分。在高级引擎构建"源"数据集并将数据提取到输出中,子查询扩展数据集或创建其他数据集。
根据复杂性,如果可以通过使用索引或任何其他方法实现目标,引擎通常会最佳地进行优化,甚至可能排除创建其他数据集,但这并非总是可行。