子查询是否算作一个查询?

时间:2014-11-14 10:22:14

标签: mysql

我基本上想要运行一个返回三个(成千上万个)表的查询,其中一个特定字段是唯一的。

我一直在努力解决这个问题,而且我不想通过三个单独的查询来解决这个问题。

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
)

是否算作一个查询或三个?

谢谢你,亲切的问候,

马修

2 个答案:

答案 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 /具有查询的一部分。在高级引擎构建"源"数据集并将数据提取到输出中,子查询扩展数据集或创建其他数据集。

根据复杂性,如果可以通过使用索引或任何其他方法实现目标,引擎通常会最佳地进行优化,甚至可能排除创建其他数据集,但这并非总是可行。