0

どういうわけか、私のデータベース テーブルは、kdaccount というフィールドに基づいて一連の値を複製しました。

私がやろうとしているのは、1 つを除いてすべての重複した kdaccounts を削除することです。その 1 つを最も早い提出日にしたいと考えています。

重複したアカウントを特定するクエリを作成しましたが、重複したアカウントを削除するための mysql クエリを構成する方法がわかりました。

$getVendors = mysql_query("SELECT vendor, nameid, kdaccount, MIN(dw_vendors.submitteddate) as `smallestDate` 
                                                FROM pr_po_main 
                                                LEFT JOIN dw_vendors ON pr_po_main.vendor = dw_vendors.kdaccount 
                                                WHERE dw_vendors.submitteddate <> '' GROUP BY vendor HAVING COUNT(dw_vendors.kdaccount) > '1'") or die("Get Vendors: " . mysql_error());
4

2 に答える 2

0

Sql Fiddleでそれを達成する方法の例をここに投稿しました

リンキーリンク

それはあなたに物事の原理を示すはずです

念のため、ここにコードを示します

DELETE Test 
FROM Test 
LEFT OUTER JOIN (SELECT MIN(comp) AS compMin, groupval
                FROM Test
                GROUP BY groupval) AS Test2 
ON Test.groupval = Test2.groupval AND Test.comp <> Test2.compmin
WHERE Test2.groupval IS NOT NULL 

テーブル定義は次のとおりです

CREATE TABLE Test 
    (
        comp int, 
        groupval int 
    );

編集:それは、having句なしで機能するはずです

于 2013-08-02T16:53:03.887 に答える