我在一個非常簡單的MMORPG的後端工作。我在PHP和MySQL我有以下表工作:MySQL:如何根據不同的列只返回一個表中不存在的唯一條目?
characters
----------
id,charactername,country,server,guild,xp,level,etc..
guilds
------
id,guildname,country,server
我所尋找的是收集字符表中的所有行會獨有的方式,找出哪些是不是在公會表並更新公會。棘手的部分似乎是同一個名字公會可能存在於不同的國家/服務器組合中。以下是有效的公會條目的一些例子表明,他們並不衝突:
21,"Hardworking Ogres","uk","development"
3151,"Hardworking Ogres","us","development"
231,"Hardworking Ogres","us","live"
所以我有公會表上guildname,國家和服務器的唯一指標 - 所以,我不是效果很好覆蓋條目。我以前一直在從字符表中將所有公會/國家/服務器的DISTINCT轉儲爲多維數組。然後從公會表中刪除現有的公會/國家/服務器列表。然後,我運行一個類似於array_diff的函數來獲取guilds表中不存在的唯一列表,並運行INSERT查詢來更新它。
我相信在MySQL中有一種更簡單的方法可以返回公會表中不存在的任何公會/國家/服務器組合的唯一列表,然後運行插入保存時間查詢2個大量MySQL請求,然後比較它們。我只是不知道下一步要看什麼,所以我的問題是:有沒有辦法在MySQL中實現這一點?
從ypercube答案爲我工作,謝謝您的輸入,以及。 – SystemX17