[SQL] insert into pw_tagdata select tid,3967 from pw_tmsgs where LOCATE(concat(' ','代考',' '),concat(' ',tags,' '))
Affected rows: 282
Time: 0.203ms这条语句里面有两个变量
3967是pw_tags表中的tid(主键,数字自增)
代考是pw_tags表中的3967对应tagname(varchar)
此表中tid与tagname一一对应现在我用上述语句已经可以根据pw_tmsgs表中的信息来对pw_tagdata表进行插入。
问题是,上述语句处理的仅仅是pw_tags表中所记录的tid的一个,就是说仅仅把tid3967这个给处理了,此表中还有4000多条数据(4000多个tid取值,对应4000多个tagname),我想一一执行上述操作,但是如果手工去写4000多条语句太笨了,想知道有什么好办法吗?

解决方案 »

  1.   

    select tid,3967 from pw_tmsgs where LOCATE(concat(' ','代考',' '),concat(' ',tags,' '))这是什么where条件
      

  2.   

    是我的严重笔误,
    3967是pw_tags表中的tid(主键,数字自增)
    改为
    3967是pw_tags表中的tagid(主键,数字自增)问题照旧。
    难怪你们没看懂。
      

  3.   

    还有这里,也要把tid改为tagid,改完的:问题是,上述语句处理的仅仅是pw_tags表中所记录的tagid的一个,就是说仅仅把tagid3967这个给处理了,此表中还有4000多条数据(4000多个tagid取值,对应4000多个tagname),我想一一执行上述操作,但是如果手工去写4000多条语句太笨了,想知道有什么好办法吗?
      

  4.   

    没看懂,   建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  5.   

    [SQL] insert into pw_tagdata select tid,3967 from pw_tmsgs where LOCATE(concat(' ','代考',' '),concat(' ',tags,' '))
    Affected rows: 282
    Time: 0.203ms这条语句里面有两个变量
    3967是pw_tags表中的tagid(主键,数字自增)
    代考是pw_tags表中的3967对应tagname(varchar)
    此表中tagid与tagname一一对应现在我用上述语句已经可以根据pw_tmsgs表中的信息来对pw_tagdata表进行插入。
    问题是,上述语句处理的仅仅是pw_tags表中所记录的tagid的一个,就是说仅仅把tagid3967这个给处理了,此表中还有4000多条数据(4000多个tagid取值,对应4000多个tagname),我想一一执行上述操作,但是如果手工去写4000多条语句太笨了,想知道有什么好办法吗?就是说 3967,代考 只是pw_tags的一行,我要对所有行都执行这种insert
    如何做
      

  6.   

    LOCATE(concat(' ','代考',' '),concat(' ',tags,' '))这个语句其实没所谓,只是一个带 参数的条件语句而已。和我的问题没有关系,可以改成 where 代考=1,也是一样,希望大家可以看到问题的本质。
      

  7.   

    实际上写个存储过程,遍历pw_tags表的每一条记录即可,但是我想知道是否可以不用存储过程,而用一条语句解决