tableid name1 test1,test2,test3,test4
2 test2,test3,test4
3 test3,test4
4 test4请问要怎么查询才能查出这样的结果
test1 1
test2 2
test3 3
test4 4要求:只用sql

解决方案 »

  1.   

    select substr(name, 1, 5) name, id from tableName
      

  2.   

    substr 不是PHP里面的函数吗?
      

  3.   

    啊,看来我没有把意思表达清楚啊,是有一个table表,里面有两个字段id,name,然后有四条记录为
    1   test1,test2,test3,test4
    2   test2,test3,test4
    3   test3,test4
    4   test4 想查询出这样的结果
    test1   1
    test2   2
    test3   3
    test4   4 
    也就是test1--4各出现了多少次
    如果不方便那就再假设还有一个表
    mytable
    字段
    id  name
    1      test1
    2      test2
    3      test3
    4      test4
    table.name相当于是有多条mytable.name的记录,但是用逗号分割开了
      

  4.   

    要像向你那样列出来我暂时没想到,只是要次数就很简单。
    select count(case when name like ‘%test1%’ then 1 end) from `table`;
      

  5.   

    本帖最后由 yueliangdao0608 于 2008-01-04 19:31:45 编辑
      

  6.   

    我的个神啊!高手啊!绝对的高手啊!这样的sql竟然还真能写出来啊!
    不过,如果test1,test2,test3、、、不知道有多少条记录呢?
    一个表里有
    1 test1
    2 test2
    3 test3
    、、、
    50 test50
    51 test51
    要查询出这个表里有的记录在
    1       test1,test2,test3,test4
    2       test2,test3,test4
    3       test3,test4
    4       test4   
    、、、
    50     test2,test45
    51       test43,test12
    这个表里出现的次数
    嘿嘿,这个又要怎么写呢?
      

  7.   

    呵呵,是不是原来的名字在csdn上不让注册啊,果然内容丰富啊,学习下。
      

  8.   

    我的个神啊!mysql手册上没有例子,你博客上也没有注释,很吃力啊老大,要不你就写个带注释的最简单的循环吧
    就类似于
    for(...){
            String s=array[i]+"....";
    }
    呵呵,帮忙帮到底吧
      

  9.   

    mysql> select * from test2;
    +----+----------------------------+
    | id | name                       |
    +----+----------------------------+
    |  1 | savage,garden,darren,hayes | 
    |  2 | garden,darren,hayes        | 
    |  3 | darren,hayes               | 
    |  4 | hayes                      | 
    |  5 | savage,garden,darren,hayes | 
    +----+----------------------------+
    5 rows in set (0.00 sec)mysql> select * from test3;
    +----+--------+
    | id | name   |
    +----+--------+
    |  1 | savage | 
    |  2 | garden | 
    |  3 | hayes  | 
    |  4 | darren | 
    +----+--------+
    4 rows in set (0.01 sec)mysql> select ttt.t3n,count(*) from (select tt.t2n t2n,tt.t3n t3n from (select t2.name t2n,t3.name t3n from test2 t2 inner join test3 t3) tt where locate(tt.t3n,tt.t2n)>0) ttt group by ttt.t3n;
    +--------+----------+
    | t3n    | count(*) |
    +--------+----------+
    | darren |        4 | 
    | garden |        3 | 
    | hayes  |        5 | 
    | savage |        2 | 
    +--------+----------+
    4 rows in set (0.00 sec)没有用存储过程哦 呵呵