2014-07-16 61 views
0

說我有一個表用於「用戶」由......組成「GROUP_ID」和「group_rank」交換行值有效地

的我有一個表爲所有的組和它們的組的信息,包括ID。

我對所有組的所有級別都有一個支持表,其中鍵爲「group_id」和「sort_id」(sort_id,因此我可以上下交換排名)。我沒有奢侈的只是指sort_id只有它可支持的許多值(1到50)

我意識到解決問題的最有效方法是讓用戶「group_rank」引用排名支持表的唯一ID但是我沒有這樣的奢侈遺憾的是,它是指「sort_id」的基礎上,從兩個等級/ users表「GROUP_ID」。

現在棘手的部分,我想交換兩個隊伍排序位置。我已經做了充分有效地與交換查詢(how to update swap values of two rows with single query

不過,我想爲所有的「用戶」的影響做同樣的。有沒有比通過group_id匹配獲取所有用戶更簡單的方法,並通過它們進行處理,然後創建2個新的查詢來更新他們單獨的新的rank_id?

+0

在SO歡迎。您可以通過提供樣本數據和期望的結果來增強您的問題,所以對您的問題感興趣的任何人都可以輕鬆理解您的意圖。這將幫助你獲得很好的答案。 – VMai

+0

你是否在這樣的事情? http://sqlfiddle.com/#!6/0ca3a/2 – JohnLBevan

回答

0

謝謝JohnLBevan,我確實一直在尋找CASE,沒想到通過什麼我真的我想詢問和在我的腦海過於複雜了。感謝您的幫助。

對於參考(以供將來使用例如參數);

UPDATE `users` SET `rank_id` = CASE WHEN `rank_id` = '1' THEN 2 WHEN `rank_id` = '2' THEN 1 ELSE `rank_id` END WHERE `group_id` = '43'