为什么操作数只能包含一列?

时间:2013-09-02 00:21:10

标签: mysql sql database

这是一个有效的查询:

select
(select 1),
(select 2),
(select 3);

但是,这不是:

select
(select 1),
(select 2, 3);

从DB逻辑的角度来看,为什么不允许第二次查询?

第二个查询是否有修复使其合法并返回与第一个查询相同(或类似)的结果,因为查询结果将保证只包含一行?

澄清:

1,2和3是实际查询的占位符,需要很长时间才能运行。 2和3来自同一个表,如果我将它们分开,查询将花费两倍的时间来运行。如果可能的话,我想避免这种开销。

2 个答案:

答案 0 :(得分:1)

问题是子查询作为列必须是单值的。

而是从子查询中选择单个列作为表:

select
(select 1),
2, 3
from (select 2, 3) t;

答案 1 :(得分:0)

在不知道真实用例的情况下很难说,但通常可以通过连接来实现:

SELECT t1.f1, t2.f2, t2.f3 FROM
(SELECT 1 AS f1) AS t1,
(SELECT 2 AS f2, 3 AS f3) AS t2

http://sqlize.com/9l0h8pcZKJ