Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 带有join的select语句中的额外重复记录_Sql_Join_Subquery_Distinct - Fatal编程技术网

Sql 带有join的select语句中的额外重复记录

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

我有两张表,“read_barcodetolid”和“serial_barcode”。它们都有相同的ordernum字段。我想选择行,不想有重复的值, 首先,我使用了以下查询:

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