首页 > 数据库技术 > 详细

Mysql in、exists、find_set_in

时间:2021-08-26 00:00:29      阅读:24      评论:0      收藏:0      [点我收藏+]

事例:www表、shop表

技术分享图片    技术分享图片

 

 

 

www表:

CREATE TABLE `www` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `year` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `season` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `amount` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

 

shop表:

CREATE TABLE `shop` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `company_id` int(11) DEFAULT NULL,
  `shop_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `shop_pic` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

 

 

 

 

 

 

 

 

IN: 

in通常是走索引的,当in后面的数据在数据表中超过30%及可能不走索引(全盘扫描)
#查询www表里的 年为1991、1992
select * from www where year in (1991,1992);

技术分享图片

 

 

 

 

EXISTS:可以代替in

# select * from www where id = 1 条件作为bool值 true执行 false不执行
select * from www  where exists (select * from www where id = 1);

技术分享图片

 

 

 

 

FIND_IN_SET:允许在逗号分隔的字符串列表中查找指定字符串的位置

 

#FIND_IN_SET(查找的字段,所有字段);
#注意所有的字段是以逗号分割的 比如2,3,4 
#完整版 find_in_set(id,(2,3,4)) 
#select * from shop where FIND_IN_SET(id,(2,3,4));
select * from shop where FIND_IN_SET(id,(select season from www where id = 1));

 

技术分享图片

 

Mysql in、exists、find_set_in

原文:https://www.cnblogs.com/fsp69/p/15187214.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!