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

15 postgresql

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

我知道如何使用SQL子选择但是我知道如何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;
Run Code Online (Sandbox Code Playgroud)

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

我不想创建第二个单独的查询,因为它是廉价的解决方案,最有可能对性能产生一些影响,最糟糕的是我不会扩展我对SQL的理解.

Joe*_*ove 21

听起来你需要一个笛卡尔连接(没有连接) - 但你会将这些值相乘(即,如果表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;
Run Code Online (Sandbox Code Playgroud)


Den*_*rdy 6

这样做的语法是:

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;
Run Code Online (Sandbox Code Playgroud)

但是,如果您不将两个表连接在一起,通常会需要两个查询。否则,您将获得两个表的笛卡尔积:

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

  • @JoeLove:几乎在同一时间回答。如果您是被否决的人,则可能需要[检查一下](http://meta.stackoverflow.com/questions/251487/getting-to-know-stack-overflows-voting-culture),以便将来使用参考。 (2认同)