SQL - 将行插入到列中具有不同值的同一个表中
问题描述:
我正在寻找将防水服务添加到服务数据库。我想为每个设备添加一次服务,而不管它是否是店内服务。这是我目前有:SQL - 将行插入到列中具有不同值的同一个表中
INSERT INTO services (serviceID, manufacturer, deviceName, serviceName, price, upc)
SELECT
DEFAULT,
manufacturer,
DISTINCT deviceName,
'Waterproofing Stand-alone',
'59.99',
'00813583026318'
FROM services
WHERE deviceName NOT LIKE '%(In-store)%';
请让我知道这是否会产生预期的效果。
谢谢
答
这不是多么独特的作品。 Distinct返回所有选定列的值的唯一组合。
假设serviceId是一个自动递增列,您可以使用聚合,并在其他列上使用max(或min)来获取每个deviceName只有一行。
insert into services (
manufacturer,
deviceName,
serviceName,
price,
upc
)
select max(manufacturer),
deviceName,
'Waterproofing Stand-alone',
'59.99',
'00813583026318'
from services
where deviceName not like '%(In-store)%'
group by deviceName;
如果每个deviceName只能有一个制造商,那么你不需要一个group by。只是DISTINCT
应该没问题:
insert into services (
manufacturer,
deviceName,
serviceName,
price,
upc
)
select distinct manufacturer,
deviceName,
'Waterproofing Stand-alone',
'59.99',
'00813583026318'
from services
where deviceName not like '%(In-store)%';
什么是“期望的效果?”你能通过样品数据告诉我们你试图插入什么吗? –
。 – ggntc
见上图。我想为每个具有防水服务的设备添加1行 – ggntc