gpt4 book ai didi

sql - PostgreSQL:如何在 select 语句中添加其他表的列?

转载 作者:行者123 更新时间:2023-11-29 12:10:49 24 4
gpt4 key购买 nike

我正在尝试从另一个表中选择一个列,就像我以前在 MSSQL 中所做的那样:

 select * , Date = (select top 1 Date from [dbo].TableB where status = 1 order by Date desc)
from [dbo].TableA

我如何在 PostgreSQL 中执行此操作?

附加示例数据:

TableA

Names

Richards
Marcos
Luke
Matthew
John

TableB

Date        Status
2016-01-01 1
2016-01-02 0
2016-01-03 1
2016-01-04 1
2016-01-05 1

预期输出:

Name        Date
Richards 2016-01-02
Marcos 2016-01-02
Luke 2016-01-02
Matthew 2016-01-02
John 2016-01-02

谢谢!

最佳答案

Date = (...) 是无效的(标准)SQL,不能在 Postgres(或除 SQL Server 之外的任何其他 DBMS)中工作

列别名是在 SQL(和 Postgres)中使用 AS ... 定义的。 Postgres 也没有top。它使用 limit

在 SQL 中也不允许在标识符中使用方括号。所以 [dbo] 需要变成 dbo"dbo" depending on how you created the schema .

select a.*, 
(select date
from dbo.tableb as b
where b.status = 1
order by b.date desc
limit 1) as date
from dbo.tablea a

date 是保留字,不应用作标识符(列名)

如果你想使用标准的 ANSI SQL,你也可以使用 fetch first 1 row only 而不是 limit 1

另一种选择是使用 max() 而不是子选择中的限制,它根本不需要限制:

select a.*, 
(select max(date)
from dbo.tableb as b
where b.status = 1) as date
from dbo.tablea a

关于sql - PostgreSQL:如何在 select 语句中添加其他表的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36144721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com