首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  HTML/JS/CSS技术专区 » [求助]求一条sql语句  


  作者:slopesun
  注册时间:2004-09-07
  主题/回复:58/67
  积分:753
  等级:★★★(六级)
  称号:声名鹊起

  ken.wang@esolux...
  185627321
  www.

 

 发表:2005-03-25 03:27:17 阅读 2190 次 回复 2 次 得分1  |   字号 字色
[求助]求一条sql语句
用的是mysql数据库,现在碰到了一个问题:
表person中有一字段name
需求:随机输出一条记录,它的name长度为4,只需要一条。
我原来的做法:(这样就会显示所有满足条件的)
$ws="select name from person "; 
$mq=mysql_query($ws);
while($wa=mysql_fetch_array($mq))

if(strlen($wa[name])==4)
{
echo $wa[name]; 

else
{
echo "没有满足条件的记录";
}
}
我想关键的问题是找到有满足条件的记录时就跳出循环
 
 1#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 1#楼 发表于2005-03-25 04:01:40  评分:1 

你现在的写法,应该说效率还是很低的
你看,你只是为了找一条记录,却查询表中的全部数据放在$mq中,然后一个一个的找,万一符合条件的记录在最后一个的话,那就得用循环找遍整个记录集,效率太低。

其实有更好的方法:直接查询出姓名长度为4的所以记录,然后把第一条输出
select * from person where LENGTH(name)=4
这句话查询出所有用户名长度为4的记录,然后直接输出一条很简单了

如果要想随机输出一条,就用个随机函数rand(),比如一共有100条符合条件的,那么产生一个0-100之间的随机数,
$count=rand(0,100);
然后输出第$count个记录,方法就是用循环
$i=0;
while(){
 $i=$i+1;
 if($i==$count){
  输出这条记录
  break;    //break用来退出循环,也就是终止循环
  }
}

这样就没问题
 2#楼  
 
  回复人:slopesun
  注册时间:2004-09-07
  主题/回复:58/67
  积分:753
  等级:★★★(六级)
  称号:声名鹊起

   
 2#楼 发表于2005-03-25 17:02:11  评分:× 

其实刚开始我就找MYSQL有没有直接计算字段长度的函数,也就是这个length.
thank you
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.004sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版