表A
ID           user_id            read_id         new_id
1            1                      null               1,2,3,4,5怎麼將new_id中的一數字更新到read_id中呢.如變成ID           user_id            read_id         new_id
1            1                      3                   1,2,4,5

解决方案 »

  1.   

    具体要更新new_id的哪个数字呢,这个得明确吧,不然sql没法写啊
      

  2.   

    就是我在new_id里存放著一組id號,是用 ","隔開的,然後我可能要隨機的從其中取出一個更新到read_id這個字段里,他的保存格式和new_id一樣.
      

  3.   

    我也是覺是,那樓上是不是覺得要將先new_id讀取出來,再進行操作
      

  4.   

    一条语句可以完成.
    但你放的先进方案不用也是自找的.
    看看MySQL手册就知道了.
      

  5.   


    UPDATE A SET new_id=REPLACE(new_id,',3,', ','),read_id=concat(read_id,',3'),read_id=REPLACE(read_id,',3,', ',') WHERE ID = 1;你如果觉得可以在外部容错可以把最后一个替换语句去掉.
      

  6.   

    謝謝SysTem128的一直關注.你的那個方案是蠻好的,不過那個c表的記錄要怎麼樣去維護呢.
      

  7.   

    C表中用户删除状态的,在消息过期后即可删除.C表
    已接收状态,过期消息不可删除.
    已读状态:分 1.已读不保留(默认),2.已读保留,不保留者过期删除.保留&&过期 状态信息过多:归档,换表另存.分表,单表使用条数可以用runloader测试性能后决定.
      

  8.   

    恩,归档,换表另存.這種想法也不錯.還有最后有個疑點,極端點的說,當我群發給10W人,那我要一次性的insert10w條記錄,這麼個樣子下來,
    整個系統跑起來會不會特別的慢啊.
      

  9.   

    啊,謝謝了.不好意思讓你費心了,小弟剛畢業不久,沒怎麼實戰經驗.又回去看了一遍,Msg_ToId       接收者编号
    也就是說,你把接收都統一放置在這個字段里了吧.如果是,那這個字段的內容也就是會很大了.順便問一下,SysTem128現在什麼公司上班啊,是什麼角色,...呵呵
      

  10.   

    看来你根本就没拿正眼看我的方案.
    Msg_ToType是没事干瞎扔在那里的么?私人问题是随便问的么?
      

  11.   

    首先,對於問您私人問題表是不好意思.
    還有你說有沒有正眼看你的方案,那您是誤會我了.這是我原帖里的方案三.
    message:
    字段名 說明
    Id                消息id號
    From_id           發送人員id號
    Message_type      群發類型(多人(限定人數範圍),國家,省,市)
    User_type         用戶類型
    To_id             根據群發類型,填入對應的(接收人員id號,...)
    Content           消息內容你是說根據Msg_ToType來確定發送給一個具有群組關係的人員,
    我這里還有一種可能是發送給一些沒有一點關聯的人員,他們沒同共同的群組關係.這時,我無法用Msg_ToType
    來將同他們確認出來.也就是我方案三中
    Message_type      群發類型(多人(限定人數範圍),國家,省,市)
    里的沒有關係的"多人"的類型,類似這種我似乎只能把他們的id號都記下來,因為我沒法根據Msg_ToType來把這個
    群體里的人員找出來.
      

  12.   

    對於我上面所描述的,不知道是不是和SysTem128的方案有對上來了呢.還請SysTem128可以再來指點一下.