A表是
id name Bids(varchar)
1  张三    1,2
2 李四     1,2,3B表
id qx(varchar)
1  上传管理员
2  订单管理员
3  后台管理员怎么查出
1  张三  上传管理员,订单管理员
2  李四   上传管理员,订单管理员,后台管理员

解决方案 »

  1.   

    自定义函数即可。。第一步,拆分A表一个记录为多条,然后join查询,,得到一个结果表。至于显示
     
    1  张三  上传管理员,订单管理员
    2  李四   上传管理员,订单管理员,后台管理员 ,最后在做个格式化显示即可。。这个自定义函数可以写在数据库中,使用sql语言;;;也可以写在程序中,程序中可能比较方便点。
      

  2.   


    drop table if exists `tbA`;
    create table `tbA` (
    `id` int primary key, 
    `name` varchar(10), 
    `bids` varchar(100)
    );insert into `tbA` values(1, '张三', '1,2');
    insert into `tbA` values(2, '李四', '1,2,3');drop table if exists `tbB`;
    create table `tbB` (
    `id` int primary key,
    `qx` varchar(10)
    );insert into `tbB` values(1, '上传管理员');
    insert into `tbB` values(2, '订单管理员');
    insert into `tbB` values(3, '后台管理员');drop procedure if exists `fnGetName`;
    drop function if exists `fnGetName`;
    delimiter ;;
    create function `fnGetName`(
    p_ids varchar(10)
    ) returns varchar(100)
    begin 
    declare p int;
    declare v_result varchar(100);
    declare v_ids varchar(10);
    declare v_id int UNSIGNED;
    declare v_qx varchar(10);
    declare v_split varchar(2);
    set v_result = '';
    set v_ids = p_ids;
    set v_split = '';

    repeat 
    set p = INSTR(v_ids, ',');
    if p > 0 then 
    set v_id = cast(SUBSTR(v_ids FROM 1 for p-1) as unsigned);
    set v_ids = SUBSTR(v_ids, p + 1);
    else 
    set v_id = cast(v_ids as unsigned);
    set v_ids = '';
    end if;

    select `qx` into v_qx from `tbB` where `id` = v_id;
    set v_result = concat(v_result, v_split, v_qx);
    set v_split = ', ';

    until LENGTH(v_ids) <= 0 end repeat;
    return v_result;

    end;;delimiter ;select `id`, `name`, `fnGetName`(`bids`) from `tbA`;
      

  3.   

    可以试试like 
      

  4.   

    < 10  可以用like...