gpt4 book ai didi

sql - 编写SQL脚本插入数据

转载 作者:行者123 更新时间:2023-11-29 14:01:56 25 4
gpt4 key购买 nike

在包含很多表的数据库中,如果不存在数据,我需要编写一个SQL脚本来插入数据。

表格货币

| id     | Code    | lastupdate | rate      |
+--------+---------+------------+-----------+
| 1 | USD | 05-11-2012 | 2 |
| 2 | EUR | 05-11-2012 | 3 |

客户端

| id     | name    | createdate | currencyId|
+--------+---------+------------+-----------+
| 4 | tony | 11-24-2010 | 1 |
| 5 | john | 09-14-2010 | 2 |

表:帐号

| id     | number  | createdate | clientId  |
+--------+---------+------------+-----------+
| 7 | 1234 | 12-24-2010 | 4 |
| 8 | 5648 | 12-14-2010 | 5 |

我需要插入到:

  1. 货币(id=3,Code=JPY,lastupdate=today,rate=4)
  2. 客户端(id=6,name=Joe,createdate=today,currencyId=Currency with Code 'USD')
  3. 帐户(id=9,number=0910,createdate=today,clientId=Client with name 'Joe')

问题:

  1. 脚本必须在插入新数据之前检查行是否存在
  2. 脚本必须允许我们将外键添加到新行,该外键与数据库中已找到的行相关(如客户端表中的 currencyId)
  3. 脚本必须允许我们将当前日期时间添加到插入语句中的列(例如 client 表中的 createdate)
  4. 脚本必须允许我们向新行添加外键,该外键与同一脚本中插入的行相关(例如 account 表中的 clientId)

注意:我尝试了下面的SQL语句,但它只解决了第一个问题

INSERT INTO Client (id, name, createdate, currencyId)
SELECT 6, 'Joe', '05-11-2012', 1
WHERE not exists (SELECT * FROM Client where id=6);

此查询运行时没有任何错误,但如您所见,我手动编写了 createdatecurrencyid,我需要从带有 where 子句的 select 语句中获取货币 id(我试图用 select 语句替换 1 但查询失败)。

这是我需要的示例,在我的数据库中,我需要这个脚本在 10 多个表中插入 30 多行。

任何帮助

最佳答案

你写的

I tried to substitute 1 by select statement but query failed

但我想知道为什么会失败?你尝试了什么?这应该有效:

INSERT INTO Client (id, name, createdate, currencyId)
SELECT
6,
'Joe',
current_date,
(select c.id from currency as c where c.code = 'USD') as currencyId
WHERE not exists (SELECT * FROM Client where id=6);

关于sql - 编写SQL脚本插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10547403/

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