1

クエリの指示が必要です。

注文表があります。次の列があります(特に)

OrderID | OrderDate | CustomerID

2012 年に注文したが、2013 年には注文していない顧客を検索したい。

(そして実際には、最終的にはもっと精度が必要になります (2012 年 3 月に注文したが、2013 年ではない顧客))

私は2つのクエリを実行できることを知っています-

"SELECT * FROM TABLE WHERE OrderDate BETWEEN 2012-01-01 AND 2012-12-31"
"SELECT * FROM TABLE WHERE OrderDate BETWEEN 2013-01-01 AND 2013-12-31"

結果を分析しますが、純粋な mysql で可能であるように思われます。

おそらく自己結合?または、ネストされた SELECT ですか? 私はこれらにあまり詳しくなく、関連する例を見つけるのに苦労しています。ご協力いただきありがとうございます!

4

3 に答える 3

0

私のクエリはより読みやすくなっています。2012 年の顧客から 2013 年の顧客を差し引くだけです。

SELECT `CustomerID` 
FROM `d` 
WHERE 
   `OrderDate` BETWEEN '2012-01-01' AND '2012-12-31 23:59:59' 
   AND `CustomerID` NOT IN
       (SELECT `CustomerID` 
        FROM `d` 
        WHERE 
            `OrderDate` BETWEEN '2013-01-01' AND '2013-12-31 23:59:59' 
        GROUP BY `CustomerID`)
   GROUP BY `CustomerID`

また、サブクエリを使用したクエリを結合を使用したクエリに書き換える方法に関する情報もあります(@Barmar のソリューション)。

于 2013-07-09T00:33:38.977 に答える