数据表中,一字段格式是:1,2,3,4,5,6怎么删除掉选定的那个?比如我需要删除里面的3,变成:1,2,4,5,6SQL语句怎么写?????????????如果我要往这个字段添加一个6.但由于原来已经存在6这个值,不能重复添加。
但我们看不到,只好写程序判断,请问又是如何用SQL语句,来判断已经存在6这个值。

解决方案 »

  1.   

    直接SQL操作——不懂
    PHP解决办法:
    $sql = 'SELECT `test` FROM `tbl` WHERE ...';
    $result = $mysqli->query($SQL);
    $row = $result->fetch_array();
    $arr = explode(',',$row['test']); //字段数据转换为数组//删除
    if (array_search('3',$arr)) unset($arr[array_search('3',$arr)]);
    $arr = array_values($arr);
    //添加
    $arr[] = '6';
    $arr = array_unique($arr);//更新
    $sql = 'UPDATE `tbl` SET `test` = "'.implode(',',$arr).'" WHERE ...';
      

  2.   

    抛块儿砖:
    MySQL不支持正则替换,所以只能用replace()这个笨办法。
    为了方便处理,建议将字段修改一下,使每个值的前后都跟一个“,”。然后用:
    UPDATE table SET field = REPLACE(',1,2,3,4,5,6,', ',3,', ',');
    修改。用:
    SELECT * FROM table WHERE field LIKE '%,6,%'
    判断6是否存在。
      

  3.   

    我写的和一楼的差不多。都是先把它转成数组,再UNSET掉,再组合成字符串,再UPDATE。
    觉得好麻烦。
      

  4.   

    会员好友表的定义是什么,还有为什么有这样的数据字段:1,2,3...它表示的是什么。这个段用了什么数据类型,varchar,char,text??这个结构我觉得更适合enum结构!
      

  5.   

    再抛块儿砖:CREATE TABLE user_friend
    (
      ID MEDIUMINT(8) UNSIGNED NOT NULL COMMENT '用户ID',
      friend_UID MEDIUMINT(8) UNSIGNED NOT NULL COMMENT '好友ID',
      PRIMARY KEY (ID, friend_UID)
    )
    COMMENT '用户好友';
      

  6.   

    CREATE TABLE user_friend
    (
      ID MEDIUMINT(8) UNSIGNED NOT NULL COMMENT '用户ID',
      friend_UID MEDIUMINT(8) UNSIGNED NOT NULL COMMENT '好友ID',
      PRIMARY KEY (ID, friend_UID)
    )
    COMMENT '用户好友';
    ________________________________再建立个表,是不是效率更低呢?存疑。没有算过运行时间。
    这个贴可以结了。终究没有让人惊喜的东东。