我有一個簡單的表(ID,Member_ID,付款,日期,payment_serial,running_total);我需要payment_serial來使用數據導出到另一個系統。當我使用GROUP BY時,爲什麼我的MySQL結果不正確?
我需要的出口是由會員付款的所有付款(顯示付款&日期),按付款順序排列,並排成一行。
這是我使用的第一個查詢:
SELECT
`Member_ID`,
IF(`payment_serial`=1,`payment`,0) AS `p1`,
IF(`payment_serial`=1,`date`,0) AS `p1_date`,
IF(`payment_serial`=1,`ID`,0) AS `p1_ID`,
IF(`payment_serial`=2,`payment`,0) AS `p2`,
IF(`payment_serial`=2,`date`,0) AS `p2_date`
IF(`payment_serial`=2,`ID`,0) AS `p2_ID`,
FROM monthlies
WHERE `Member_ID` = 4198739
如果我使用此查詢,我看到我需要的款項,但每一個單獨的行(這在下一階段產生大的進口問題):
Member_ID p1 p1_date p1_ID p2 p2_date p2_ID ...
4198739 34.50 41143 214 0 0 0 ...
4198739 0 0 0 34.50 41176 583 ...
我加GROUP BY:
SELECT
IF(`payment_serial`=1,`payment`,0) AS `p1`,
IF(`payment_serial`=1,`date`,0) AS `p1_date`,
IF(`payment_serial`=1,`ID`,0) AS `p1_ID`,
IF(`payment_serial`=2,`payment`,0) AS `p2`,
IF(`payment_serial`=2,`date`,0) AS `p2_date`,
IF(`payment_serial`=2,`ID`,0) AS `p2_ID`
FROM monthlies
WHERE `Member_ID` = 4198739
GROUP BY `Member_ID`
這讓我對每個成員的單個行 - 但不每次付款:
Member_ID p1 p1_date p1_ID p2 p2_date p2_ID ...
4198739 34.50 41143 214 0 0 0 ...
我要去哪裏錯了?
你爲什麼說MYSQL實現了錯誤的GROUP BY?參考?請不要比較SQL平臺。 –
@Leandro因爲它。 http://www.youdidwhatwithtsql.com/mysql-group-by/1471 – podiluska
良好的聯繫,但又是什麼? T-SQL?什麼是參考?我認爲MySQL只是另一個角度來看待這麼多事情,一些好的,一些壞的,這取決於你如何工作。我不認爲這是一個客觀的錯誤。無論如何感謝您的參考,+1點 –