数据库中怎样查询符合条件的记录是否存在

例如我想知道table1里是否有city='Beijing'的记录,该怎么写查询语句呢?我知道可以写selectcount(*)fromtable1wherecity='... 例如我想知道table1里是否有city='Beijing'的记录,该怎么写查询语句呢?
我知道可以写
select count(*) from table1 where city='Beijing'然后就可以看到有多少条记录了;
或者可以写
select * from table1 where city='Beijing'然后可以通过看返回的记录集是否为空来判断是否存在符合条件的记录。

可是现在的问题是,这个表会很大,例如几十万条记录甚至更多;city='Beijing'的记录也会有很多。通过上面的方法都会需要扫描整个表来得到结果,开销大,而我仅仅只是想知道是否存在city='Beijing'的记录而已,犯不着搞这样大的开销。

或者有人会回答这样的:
select * from table1 where city='Beijing' limit 1
这样强制让查询只返回一条记录。
可是这样也不行,Mysql还是会扫描整个表,因为它好像还会隐含的根据什么东西来进行排序,然后返回排序后的第一个记录。反正是,像上面那样写,分析结果表明Mysql还是会扫描整个表的。

怎么办?求强人指教啊!说明一句:使用的数据库是Mysql,但是凡是能解决类似问题的方法都好呀!
展开
 我来答
糖糖寳寳
推荐于2017-09-28 · TA获得超过6.4万个赞
知道大有可为答主
回答量:1.8万
采纳率:92%
帮助的人:3862万
展开全部

$sql= 'select  * from tbname where username ="'.$username.'"';
$result = mysql_query($sql);
$data = mysql_num_rows($result);
if ($data){
   echo "已存在";
}

badkano
2007-10-23 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144777 获赞数:885359
团长

向TA提问 私信TA
展开全部
给你city字段建立上索引
CREATE INDEX city_index ON table1(city)
city_index是索引名,table1是表名,city代表给哪个字段建索引
只能如此了,单纯从语句上节约资源好像不太可能实现
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
萧月痕
2007-10-23 · 超过30用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:94万
展开全部
如果你只想知道有没有可以用select count(1) as [num] from table1 where city='Beijing' 得到num的值..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xing_8888_good
2007-10-23 · TA获得超过5403个赞
知道小有建树答主
回答量:875
采纳率:0%
帮助的人:0
展开全部
select top 1 * from table1 where city ='beijing'

不知道这样行不行?????

不过数据量大的时候,最好建立索引!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
seagullmaple
2007-10-23 · 超过47用户采纳过TA的回答
知道答主
回答量:245
采纳率:0%
帮助的人:132万
展开全部
select * from table1 where city='Beijing' like '%"&keyword&"%'"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式