PostgreSQL单个查询SELECT单行FROM两个表没有JOIN

时间:2014-12-05 20:11:48

标签: postgresql

我需要创建的查询结果只返回一行。我需要提取的数据来自两个没有任何关系列的表。第二个表每年只添加一次额外的行,因此我将根据需要通过PHP构建查询。

我知道如何使用SQL子SELECT但是当没有关系数据时,我 确定如何SELECT多个列FROM第二个表以绩效导向/动态方式。

这是一个静态示例,我使用多个子SELECT来可视化我尝试做的事情......

SELECT t1.a, 
t1.b, 
t1.c, 
(SELECT t2.d FROM table2) AS d, 
(SELECT t2.e FROM table2) AS e, 
(SELECT t2.f FROM table2) AS f, 
(SELECT t2.g FROM table2) AS g, 
t1.h, 
t1.i
FROM table1 AS t1;

如何从第二个没有关系列的表中动态高效地从第一个表中提取多个列?

我不想创建第二个单独的查询,因为它是便宜的解决方案,很可能某些对性能的影响,最糟糕的是我不会扩展我对SQL的理解。

2 个答案:

答案 0 :(得分:14)

听起来你需要一个笛卡尔连接(没有连接) - 但你会将这些值相乘(即,如果表1有100行而表2有10行,你将返回1000行)

SELECT t1.a, 
t1.b, 
t1.c, 
t2.d, 
t2.e, 
t2.f,
t2.g,
t1.h, 
t1.i
FROM table1 AS t1, table2 as t2;

答案 1 :(得分:4)

这样做的语法是:

SELECT t1.a, 
       t1.b, 
       t1.c, 
       t2.d, 
       t2.e, 
       t2.f, 
       t2.g, 
       t1.h, 
       t1.i
FROM table1 AS t1, table2 as t2;

如果你没有加入这两个表,你通常会想要两个查询。否则,您将获得两个表格的笛卡尔积:

http://en.wikipedia.org/wiki/Cartesian_product