0
    CUSTOMER(CustID, CustName)
    Sale(SaleNo, StockNo, CustNo, SaleDate)

2009 年以降何も購入していない顧客を削除するにはどうすればよいですか?

マイナス記号を使用して CustID を取得できます

    SELECT CustID FROM CUSTOMER
    WHERE SaleDate <= to_date('31-12-09', 'DD-MM-YY')
    MINUS
    SELECT CustID FROM CUSTOMER
    WHERE SaleDate > to_date('31-12-09', 'DD-MM-YY');

しかし、単一のクエリで削除を行う方法がわかりません。

任意の提案をいただければ幸いです

4

3 に答える 3

3
delete from CUSTOMER c
inner join Sale S 
on C.CustID=S.CustNo
where max(SaleDate)<='31-12-09'
于 2013-08-31T09:25:37.003 に答える
0

SQL Server で

DELETE FROM Customer
WHERE CustID IN ( SELECT CustNo FROM Sale 
                  GROUP BY CustNo
                  HAVING YEAR(MAX(SaleDate))<2009)

MySQL では

DELETE FROM Customer
WHERE CustID IN ( SELECT CustNo FROM Sale 
                  GROUP BY CustNo
                  HAVING EXTRACT(YEAR FROM MAX(SaleDate))<2009)
于 2013-08-31T09:28:07.443 に答える