select * from guser where (gname='刘已' or ename='刘已') and gid=(select gid from guser where gtel='15000000000')
子查询select gid from guser where gtel='15000000000'共查出两条记录,这时整个查询语句报错,在子查询得到一条记录时不报错,如何写才能在子查询得到两条记录时正常执行(只要一条查询语句)

解决方案 »

  1.   

    select * 
    from guser 
    where (gname='刘已' or ename='刘已') 
    and gid in (select gid from guser where gtel='15000000000')
      

  2.   

    用IN
    select * from guser where (gname='刘已' or ename='刘已') and gid
    IN(select gid from guser where gtel='15000000000')
      

  3.   

    我用linux C连接MYSQL  代码:
    sprintf(query,"select * from guser where (g_name='刘尧' or e_nam e='刘尧' or t_name='刘尧') and g_id in (select g_id from guser where g_tel='15049616161')");
             if(!mysql_query(my_conn,query))
             {
                 ress=mysql_use_result(my_conn);
                 while((roww=mysql_fetch_row(ress))!=NULL)
                     {
                         strcpy(liu,roww[5]);
                         printf("%s,%d\n",row[3],liu[0]);
                     }
                 mysql_free_result(ress);
             }
    应该有两条记录g_id分别为1和2,如果是一条记录就可以成功执行,两条就会报错“段错误”。同样的用“IN”的那条SQL语句在PHP里就可以成功执行(无论有几条记录)这是怎么回事?
      

  4.   

    select * from guser where (g_name='刘尧' or e_nam e='刘尧' or t_name='刘尧') and g_id in (select g_id from guser where g_tel='15049616161')你的SQL的语法不对 ,去掉这个空格
    select * from guser where (g_name='刘尧' or e_name='刘尧' or t_name='刘尧') and g_id in (select g_id from guser where g_tel='15049616161')