搜尋

首頁  >  問答  >  主體

根據MySQL的行中的值建立唯一ID

我正在為一個家譜專案建立一個 Web 應用程式。我希望添加到資料庫中的每個人都有一個唯一的ID,該ID 基於其姓氏的前3 個字元(為了解釋起見,我們稱之為“姓氏字串”),並與自動增量(從00001代表每個唯一的“姓氏字串”)。

例如 - 一個人的姓氏是「Smith」。姓氏字串將為 SMI,並且由於它們是第一個姓氏字串“SMI”,因此完整參考將為 SMI00001。另一個人的姓氏是 Black,因此他們的姓氏字串為 BLA,並且因為他們是第一個具有姓氏字串 BLA 的人,所以他們的參考將是 BLA00001。第三個人的姓氏也是 Smith - 他們是第二個具有 SMI 姓氏字串的人,因此他們的參考號碼應該是 SMI00002。

此唯一 ID 將在人員 URL 中使用,供資料庫中的人員搜尋並在人員之間建立關係。

我不知道如何從邏輯上解決這個問題。

我還沒有嘗試過任何東西。這超出了我的想像!

P粉541796322P粉541796322337 天前349

全部回覆(1)我來回復

  • P粉225961749

    P粉2259617492023-12-28 00:08:17

    此方法比較粗略,通常您應該使用資料庫自動遞增(數字)或自動產生唯一 ID,例如 md5(time().'randomsalt'.$username)。

    但是如果您必須使用 XXX00000 格式,您將需要以下功能:

    • 檢查資料庫中是否有BLA00001
    • 如果是,請檢查 BLA00002 等。
    • 如果否,則建立新條目

    一段時間後這會非常慢,而且每個名字最多有 99999 次存在的機會,之後你需要將 BLA 更改為 BL1、BL2 等。

    回覆
    0
  • 取消回覆