這是交易。MySQL刪除重複問題
我的數據庫表有很多列。這4特別是我想要的重點:
BOL_NUMBER, CONTAINER_NUMBER, WORKFLOW, WORKFLOW_DATESTAMP
一個BOL_NUMBER可能有許多CONTAINER_NUMBERs,與不同的工作流(A CONTAINER_NUMBER只能有一個BOL_NUMBER)。每次更新CONTAINER_NUMBER的WORKFLOW時,WORKFLOW_DATESTAMP都會使用MySQL語法NOW()記錄更新的日期和時間。
當用戶搜索BOL_NUMBER(我的測試BOL_NUMBER是AAAA111111)時,該表返回3個BOL_NUMBER,全部使用3個不同的CONTAINER_NUMBER。
當前的搜索返回此數據:
BOL_NUMBER CONTAINER_NUMBER WORKFLOW WORKFLOW_DATESTAMP
AAAA111111 TRLU1234567 UNASSIGNED 2014-01-21 12:00
AAAA111111 MAXU7894561 UNASSIGNED 2014-01-21 12:00
AAAA111111 CMAU6543217 UNASSIGNED 2014-01-21 12:00
在這一點上,當一個CONTAINER_NUMBER的條件是正確的,用戶可以更新工作流,充分調度。對於這種情況,我將使用CONTAINER_NUMBER TRLU1234567。
當CONTAINER_NUMBER已更新時,用戶可以執行另一個搜索來驗證工作流是否確實已更新。
這是CONTAINER_NUMBER TRLU1234567後的搜索結果已經被更新:
BOL_NUMBER CONTAINER_NUMBER WORKFLOW WORKFLOW_DATESTAMP
AAAA111111 TRLU1234567 UNASSIGNED 2014-01-21 12:00
AAAA111111 TRLU1234567 FULLY DISPATCHED 2014-01-23 02:00
AAAA111111 MAXU7894561 UNASSIGNED 2014-01-21 12:00
AAAA111111 CMAU6543217 UNASSIGNED 2014-01-21 12:00
正如你看到的例子上面,現在是CONTAINER_NUMBER TRLU1234567的兩個實例。 請注意:這樣做的原因是跟蹤當工作流被更新
雖這麼說,我不想返回重複CONTAINER_NUMBER的。我只想顯示最近的WORKFLOW_DATESTAMP。
基本上,當用戶執行用於BOL_NUMBER AAAA111111搜索時,它應該只返回以下:
BOL_NUMBER CONTAINER_NUMBER WORKFLOW WORKFLOW_DATESTAMP
AAAA111111 TRLU1234567 FULLY DISPATCHED 2014-01-23 02:00
AAAA111111 MAXU7894561 UNASSIGNED 2014-01-21 12:00
AAAA111111 CMAU6543217 UNASSIGNED 2014-01-21 12:00
數據庫表將具有BOL_NUMBER AAAA111111的4個實例,但只有顯示器3,如上所示,基於WORKFLOW_DATESTAMP。
我希望我在這裏很清楚。
這裏是我一直在嘗試使用,使這項工作代碼:
SELECT DISTINCT
BOL_NUMBER,
CONTAINER_NUMBER,
WORKFLOW,
MAX(WORKFLOW_DATESTAMP)
FROM
main_table
WHERE
BOL_NUMBER = 'AAAA111111'
GROUP BY
BOL_NUMBER, CONTAINER_NUMBER;
但是當我使用上面的代碼,我只未分配工作流程返回原來的3個CONTAINER_NUMBERs。即使數據庫表有4個BOL_NUMBER實例。
我把DISTINCT帶出了SELECT語句,但是這給了我相同的結果。
當我刪除GROUP BY子句時,它只返回1個帶有最新WORKFLOW_DATESTAMP的記錄,但在WORKFLOW列中顯示UNASSIGNED。
我希望我在這裏很清楚。基本上,如果用戶搜索BOL_NUMBER,代碼將檢查重複的CONTAINER_NUMBER,檢查哪一個具有最新的WORKFLOW_DATESTAMP,並顯示THAT記錄以及其他非重複的記錄。
我不認爲我能比這更清楚。
請幫忙。
預先感謝您。
你在這張桌子上有獨特的鑰匙嗎? –