2015-01-19 4 views
0

У меня есть 2 таблицы SVC_ServiceTicket и SVC_CustomersVehicleКак получить одну строку из дублированных строк?

В таблице ServiceTicket есть столбец CustomerID, который является внешним ключом к CustomersVehicle.So в колонке ServiceTicket CUSTOMERID могут иметь одинаковые значения.

Когда я

select sst.ServiceTicketID,sst.CustomerID 
from ServiceTicket sst,CustomersVehicle scv 
where sst.CustomerID=scv.CV_ID 

то это дает мне продублировать customerID.So мое требование, если есть повторяющиеся значения CUSTOMERID я хочу последнюю CUSTOMERID и а serviceticket этого соответствующего (последней CUSTOMERID)

Например, в скриншоте ниже есть CUSTOMERID 13 повторяется поэтому в данном случае я хочу последнюю CUSTOMERID, а также serviceticket поэтому значения я хочу это 8008 и 13

скажите, пожалуйста, как сделать

enter image description here

+0

Вы говорите 'customerID', но ваш запрос не использует его. Кроме того, что означает _latest_, согласно какому столбцу (столбцам)? –

+0

@TimSchmelter жаль, что я плохой, я не хотел показывать не нужные строки, поэтому, когда копирование здесь пропустило важную часть. Начните, когда новая запись будет вставлена, она будет присутствовать в последней строке, поэтому мне нужна последняя строка –

+0

Таблица не имеет неявного порядка. Таким образом, нет _first_ или _last_. Вы должны заказать набор результатов, чтобы получить заказ. Вы можете использовать столбец PK, но столбец datetime будет лучше. –

ответ

0

Использование агрегатной функции MAX. Также я бы рекомендовал использовать JOIN.

SELECT MAX(sst.ServiceTicketID) AS ServiceTicketID,sst.CustomerID 
FROM ServiceTicket sst JOIN 
    CustomersVehicle scv ON sst.CustomerVehicleID=scv.CV_ID 
GROUP BY sst.CustomerID 
+0

Спасибо за ответ, почему вы сказали * Также я бы рекомендовал использовать JOIN. * –

+0

@javaprogrammer: Потому что, лучший практика заключается в использовании синтаксиса 'JOIN ... ON ...' для объединения двух таблиц, а не упоминания отношения в where where. –

Смежные вопросы