2017-04-03 1 views
1

서비스 데이터베이스에 방수 서비스를 추가하려고합니다. 나는 각 장치마다 한 번씩 서비스를 추가하려고합니다. 그렇지 않으면 매장 내 서비스가 아닙니다.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)%'; 

이 원하는 효과를 것 있으면 알려 주시기 바랍니다 : 여기에 내가 현재 가지고있는 것입니다.

감사합니다.

+2

"원하는 효과가 있습니까?" 삽입하려고하는 샘플 데이터를 통해 우리를 보여줄 수 있습니까? –

+0

! [Valid XHTML] (http://www.giganticsocial.com/db.png). – ggntc

+0

위의 이미지를 참조하십시오. 방수 서비스가있는 각 장치에 대해 1 행을 추가하고 싶습니다. – ggntc

답변

2

별개의 작동 방식은 아닙니다. 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 당 하나의 제조업체 만있을 수있는 경우 그룹별로 필요하지 않습니다. 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)%'; 
+0

각기 고유 한 deviceName에 대해 하나의 서비스가 추가됩니까? – ggntc

+0

나는이 녀석에게 동의한다. 그룹별로 사용 ​​- 뚜렷하지 않음. –

+0

@ggntc - 예, 하나의 서비스로 고유 한 장치 이름을 생성해야합니다. 그러나 정확히 무엇이 집합 함수에 의해 생성 될 것입니다. 그것이 당신이 원하는 것이 아니라면, 샘플 데이터와 예상 결과를 설명과 함께 질문에 추가하십시오. – GurV

관련 문제