gpt4 book ai didi

sql - PostgreSQL:更新前 2 行语法错误?

转载 作者:行者123 更新时间:2023-11-29 12:53:13 25 4
gpt4 key购买 nike

我正在尝试编写一个更新函数来更新前 2 个 id,其中它按不同表中欠款的最高总数排序,另一个条件是 id 为 NULL,并且它应该与个人中的纳税人 ID 匹配表。

下面是数据表的例子:


欠款表:

IRSagentID | taxpayerid
-----------------------
NULL | 1
23hj23 | 2
NULL | 3

个人表

taxpayerid | totalTaxedOwed
---------------------------
1 | 2
5 | 44
3 | 34

结果(应该是)

3 | 34    (ordered by cost in individual table)
1 | 2 (ordered by cost in individual table)

在 Delinquents 的 3 和 1 中应该更新什么。所以 3 & 1 NULL 变量会变成 theAgt 所以 2 都更新了。更新2

这是我更新时的代码尝试

UPDATE Delinquents
SET d.IRSagentID = 'theAgt'
FROM Delinquents d JOIN Individuals i
ON d.taxpayerID = i.taxpayerID
WHERE d.IRSagentID IS NULL
ORDER BY i.totalTaxOwed DESC
LIMIT 2;

但是,我得到了这个错误:

psql:query1.sql:39: ERROR:  syntax error at or near "ORDER"
LINE 6: ORDER BY i.totalTaxOwed DESC

我也试过这样做

UPDATE Delinquents
SET IRSagentID = 'theAgt'
WHERE IRSagentID IN (
SELECT d.IRSagentID
FROM Delinquents d JOIN Individuals i
ON d.taxpayerID = i.taxpayerID
WHERE d.IRSagentID IS NULL
ORDER BY i.totalTaxOwed DESC
LIMIT 2);

但结果是Update 0。


我试着先做select看看结果,但是我在SELCET中得到了我想看到的,但是改成update很烦人。我无法执行 ORDER BY。还有其他选择吗?下面是我用来获得我想要的结果的方法,但现在它只是添加更新。

SELECT d.taxpayerID, i.totalTaxOwed, d.IRSagentID
FROM Delinquents d JOIN Individuals i
ON d.taxpayerID = i.taxpayerID
WHERE d.IRSagentID IS NULL
ORDER BY i.totalTaxOwed DESC
LIMIT 2;

最佳答案

您可以使用您拥有的 SELECT 作为 UPDATE 语句的来源:

UPDATE delinquents d
set irsagentid = t.totaltaxedowed
FROM (
SELECT d.taxpayerid, i.totaltaxedowed, d.irsagentid
FROM delinquents d
JOIN individuals i ON d.taxpayerid = i.taxpayerid
WHERE d.irsagentid IS NULL
ORDER BY i.totaltaxedowed DESC
LIMIT 2
) t
where d.taxpayerid = t.taxpayerid;

在线示例:http://rextester.com/IJEE18608

这假设 taxpayerid 是表 delinquents 中的主键(并且在 individuals 中也是唯一的)。

关于sql - PostgreSQL:更新前 2 行语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49271154/

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