gpt4 book ai didi

MySQL查询根据另一个表中的记录将记录插入表中

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

我需要一些有关 MySQL (5.6) 查询的帮助。我不知道如何开始。

我有一张“ Blade ” table 。该表包含 Blade 服务器记录,包括以下列:

  • 外壳名称
  • 海湾编号
  • 描述
  • 服务器名称
  • ...

每个机柜在托架 1-16 中容纳 16 个 Blade 服务器。

我有另一个表“available_bays”。该表包含以下列:

  • 外壳名称
  • 海湾编号
  • 状态
  • 保留
  • 保留者
  • 保留日期


我需要一个查询来扫描 Blade 表,并且对于每个少于 16 个 Blade 的机柜,将一行写入 available_bays 表中,其中包含机柜名称和机柜编号。使用的机柜托架可能不连续。换句话说,机箱 1 中的服务器可能位于托架 1-8、10、13-16 中。因此,在此示例中,我需要在 available_bays 表中得到以下记录:

enclosure_name bay_number
enclosure01 9
enclosure01 11
enclosure01 12

此外,仅当相同的 housing_name 和 bay_number 尚未存在时,才需要在 available_bays 表中插入记录。

任何有关创建此查询的帮助将不胜感激。

最佳答案

sqlFiddle 是这里的一个示例,我只为前 3 个海湾生成 available_bays,您可以在 UNION SELECT 4 中添加,依此类推,最多 16 个。

INSERT INTO available_bays(enclosure_name,bay_number)
SELECT t3.enclosure_name,t3.bay_number
FROM
(SELECT enclosure_name,bay_number FROM
( SELECT 1 as bay_number
UNION SELECT 2
UNION SELECT 3
UNION SELECT 4
UNION SELECT 5
UNION SELECT 6
UNION SELECT 7
UNION SELECT 8
UNION SELECT 9
UNION SELECT 10
UNION SELECT 11
UNION SELECT 12
UNION SELECT 13
UNION SELECT 14
UNION SELECT 15
UNION SELECT 16)as t,
(SELECT DISTINCT enclosure_name FROM blades)as t2
)as t3
LEFT JOIN blades b
ON (b.bay_number = t3.bay_number AND b.enclosure_name = t3.enclosure_name)
LEFT JOIN available_bays ab
ON (ab.bay_number = t3.bay_number AND ab.enclosure_name = t3.enclosure_name)
WHERE b.bay_number IS NULL
AND ab.bay_number IS NULL;

关于MySQL查询根据另一个表中的记录将记录插入表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20578310/

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