[英]MySQL query to insert record into table based on records in another table
我需要MySQL(5.6)查询的帮助。 我不确定如何开始。
我有一张桌子“刀片”。 该表包含刀片服务器记录,包括以下列:
每个机柜在1-16托架中可容纳16个刀片服务器。
我有另一个表“ available_bays”。 该表包含以下列:
我需要一个查询,它将扫描刀片服务器表,对于每个刀片少于16个的机箱,将其一行写入带有外壳名称和bay_number的available_bays表中。 使用的机柜托架可能不连续。 换句话说,机柜1中的服务器可能位于托架1-8、10、13-16中。 因此,在此示例中,我将需要在available_bays表中包含以下记录:
enclosure_name bay_number
enclosure01 9
enclosure01 11
enclosure01 12
另外,仅当尚未退出相同的enclosure_name和bay_number时,才需要将记录插入available_bays表中。
在创建此查询的任何帮助将不胜感激。
sqlFiddle是一个示例,这里我只为前三个托架生成available_bay,可以添加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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.