Sql 带有join的select语句中的额外重复记录
我有两张表,“read_barcodetolid”和“serial_barcode”。它们都有相同的ordernum字段。我想选择行,不想有重复的值, 首先,我使用了以下查询:Sql 带有join的select语句中的额外重复记录,sql,join,subquery,distinct,Sql,Join,Subquery,Distinct,我有两张表,“read_barcodetolid”和“serial_barcode”。它们都有相同的ordernum字段。我想选择行,不想有重复的值, 首先,我使用了以下查询: SELECT distinct(t1.ordernum) , t1.tarikh, t2.city, t2.officeNum, t2.provience
SELECT distinct(t1.ordernum)
, t1.tarikh,
t2.city,
t2.officeNum,
t2.provience
FROM read_barcodetolid t1
join serial_barcode t2 on t1.ordernum=t2.ordernum
它只适用于ordernum字段。但当我加上另一个领域,如城市,。。。它做了一些重复的记录
然后我写了这个:
SELECT DISTINCT (
SELECT DISTINCT TOP (1) ordernum
FROM read_barcodetolid
WHERE (ordernum = seri.ordernum)
ORDER BY ordernum DESC
) AS ordernum,
(
SELECT TOP (1) seri.officeNum
FROM read_barcodetolid AS read_barcodetolid_2
WHERE (ordernum = seri.ordernum)
ORDER BY ordernum DESC
) AS officeNum,
(
SELECT TOP (1) provience
FROM serial_barcode
WHERE (ordernum = seri.ordernum)
) AS provience,
(
SELECT TOP (1) city
FROM serial_barcode AS serial_barcode_1
WHERE (ordernum = seri.ordernum)
) AS city,
(
SELECT TOP (1) tarikh
FROM read_barcodetolid AS read_barcodetolid_1
WHERE (ordernum = seri.ordernum)
) AS tarikh
FROM serial_barcode AS seri
WHERE (ordernum IS NOT NULL)
ORDER BY tarikh DESC
它返回结果,但最后显示一些空记录,当我使用“where ordernum IS NOT NULL”时,它不起作用
我能做什么?
消除额外重复记录的更好方法是什么?尝试使用GROUPBY子句
SELECT t1.ordernum, MAX(t1.tarikh) tarikh, MAX(t2.city) city, MAX(t2.officeNum) officeNum, MAX(t2.provience) provience
FROM read_barcodetolid t1 join serial_barcode t2 on t1.ordernum=t2.ordernum
WHERE (ordernum IS NOT NULL)
GROUP BY t1.ordernum
ORDER BY MAX(t1.tarikh) DESC