当前位置: 首页 > 面试题库 >

编写Postgres获取或创建SQL查询

爱刚捷
2023-03-14
问题内容

我想编写一条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 
    from mytable
    where color = 'X' and brightness = 'Y'
);
SELECT (color, brightness, size, age) 
FROM mytable 
WHERE color = 'X' AND brightness= 'Y';

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



 类似资料:
  • 我可以使用创建演员,并使用查看他们。现在我想通过一些获得一个actor,如果它不存在,我想创建它。大概是这样的: 但是这不起作用,因为总是正确的,而且我得到

  • 我有3个表作为学生数据,包括学生的数据,科目表的数据提供的所有科目和分数,学生获得的每一个科目的分数。通过StudentId标记到StudentData表的表映射,通过SubjectId标记到Subjects表的表映射 我想做的是选择每个科目的最高分数和学生的名字,如下所示 所以我写了一个甲骨文PL / SQL查询如下, 但它只给出了一个结果。请帮助我开发一个查询来获取我的预期结果集。

  • 我有一个sql查询: 这就产生了: Hibernate:选择this_.pName为y0_,this_.kNum为y1_,count(distinct this_.agentg)为y2_from Test_CPView this_where(低(this_.pName+“~”+this_.kNum)like?或低(this_.pName+“~”+this_.kNum)like?或低(this_.p

  • 本文向大家介绍用注解编写创建表的SQL语句,包括了用注解编写创建表的SQL语句的使用技巧和注意事项,需要的朋友参考一下 今晚读了think in java 的章节,感觉很不错,我就敲了下来,贴上代码给以后一个回顾:  建议提前读一下think in java 注解 。  说明创建注解我在第一个注解说明下,以后的注解不在说明。‘  DBTable 注解:  Constraints 约束注解:   S

  • 我在Mariadb有大量的数据。我需要从查询创建转储文件。到目前为止我有这样的东西。

  • 我正在为授权服务器开发一个管理用户界面。其中一个功能是显示登录用户的列表,我们通过查询存储当前发布的刷新令牌的数据库表来实现这一点。用户可以从多个设备登录到同一个应用程序,生成多个令牌。目前的要求不是按设备细分此视图,而是如果用户已登录,则它们将显示在列表中。如果我们撤销访问权(此UI的其他要求之一),那么所有设备的刷新令牌都将被撤销。 不管怎样,最让我困惑的是这个问题。我编写这个查询是为了收回指