gpt4 book ai didi

sql - 编写 Postgres 获取或创建 SQL 查询

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

我想写一个 Postgres SQL 语句,说寻找颜色为 X 和亮度为 Y 的用户。如果该用户存在,则返回其所有行数据。如果不是,则创建一个新行并传递其他信息。两个单独的语句会做这样的事情:

Select (color, brightness, size, age) FROM mytable WHERE color = 'X' AND brightness= 'Y';

如果没有返回任何东西,那么执行这个:

INSERT INTO mytable (color, brightness, size, age) VALUES (X, Y, big, old);

有没有办法将这些组合成一个查询??

最佳答案

在 SQL DBMS 中,select-test-insert 方法是错误的:没有什么可以阻止另一个进程在您的 selectinsert 语句之间插入“缺失的”行.改为这样做:

INSERT INTO mytable (color, brightness, size, age)
SELECT color, brightness, size, age
FROM mytable
WHERE NOT EXISTS (
SELECT 1
FROM mytable
WHERE color = 'X' AND brightness = 'Y'
);
SELECT (color, brightness, size, age)
FROM mytable
WHERE color = 'X' AND brightness= 'Y';

您应该能够将整个文本作为单个“查询”传递给 DBMS。您可能需要考虑将其变成存储过程。

关于sql - 编写 Postgres 获取或创建 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16123944/

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