我想弄清楚運行此查詢的最佳方法。我基本上需要返回僅在我們的系統中下單的客戶的「登錄」字段(登錄字段基本上是客戶ID /密鑰)列表。MySql分組
我們的系統上的一些背景...
通過放置在同一天一個客戶多個訂單是一個數量級的equalivant。原因是我們有多個供應商,任何時候有人訂購我們的購物車系統會將該單一訂單分成多個訂單 - 每個獨特供應商按該訂單訂購1份訂單。
下面是基本的MySQL查詢我拿出這麼遠..
SELECT
xcart_orders.login,
COUNT(xcart_orders.login) as c1,
FROM_UNIXTIME(xcart_orders.date, '%Y-%m-%d') as d1
FROM
xcart_orders
WHERE
INSTR(xcart_orders.email, "marketplace") <= 0
GROUP BY
xcart_orders.login,
FROM_UNIXTIME(xcart_orders.date, '%Y-%m-%d')
ORDER BY
xcart_orders.login
ASC
這是返回的數據的樣本...
login c1 d1
01crouse 1 2007-11-30
022336010 2 2009-06-24
022336010 1 2009-08-28
02emzach 1 2011-08-25
02emzach 1 2011-10-18
這是返回我一個不錯的客戶名單,每個日期的唯一訂單計數
問題是 - 現在我需要將這個結果集合在一起,並且只返回有1個客戶在這個結果集中的獨特記錄 - 我不太清楚如何做到這一點
所以如果你看到上面的示例結果集 - 我需要返回01crouse出登錄列表 - 因爲該登錄只有1條記錄,有史以來第一個訂單,其他訂單有多個訂單。我希望這是有道理的 - 請讓我知道,如果你有使用具有
我recommened使用在所有
重要說明任何問題:
HAVING c1 = 1
不幸的是擁有將無法正常工作 - 原因是因爲c1可能大於1,因此情況屬實。請記住,它在結果中每天給我一個訂單,因此 - 如果某人在同一天按順序向3個供應商下了一個訂單,那麼將在那一天導致3個訂單 - 但是 - 這是他們的一個訂單放置 - 這些類型的人將被排除使用HAVING
這就是爲什麼我需要進行分組,然後計算結果集 - 例如,登錄 - 在此計數返回1的任何記錄都是準確的 - 問題是我不知道如何對此結果集執行一組操作
這似乎有完成了這個訣竅 - 非常感謝。 – 99823