作家
登录

【MYSQL】业务上碰到的SQL问题整理集合

作者: 来源: 2017-12-20 16:04:47 阅读 我要评论

修改表语句

媒介

修改字符集

  1. ALTER TABLE `config` MODIFY COLUMN `keyvarchar(255) BINARY NOT NULL

以config表为例, 表内数据:

key value id email 295697141@qq.com 1 username 我 2


SQL语句:

  1. SELECT `key`, `value` FROM `config` WHERE `keyIN ('username''email'); 

履行结不雅:

key value email 295697141@qq.com username 我


明明是username 优先于 email, 结不雅倒是 email优先于 username. 原因在于 IN 萌芽只负责萌芽, 不负责排序, 而默认排序是用 id asc, 所以获得了一个不相符IN萌芽的结不雅

解决筹划

  1.     应用 ORDER BY FIELD()
  2.     应用 ORDER BY FIND_IN_SET() 
  1. SELECT `key`, `value` FROM `config` WHERE `keyIN ('username''email'ORDER BY FIELD('key','username''email'); 

或者

  1. SELECT `key`, `value` FROM `config` WHERE `keyIN ('username''email'ORDER BY FIND_IN_SET(`key`,'username,email'); 

最终履行结不雅:

key value username 我 email 295697141@qq.com

留意: FIND_IN_SET 第二个参数 strlist 逗号之间不须要空格

SELECT 存储萌芽冷僻汉字, 结不雅乱码 ?

前提,数据库和表都是采取的是utf8字符集.

  1. INSERT INTO `config` (`key`,`value`,`id`) VALUES ('word''𠂤', 7); 

萌芽SQL:

  1. SELECT * FROM `config` WHERE `key` = 'word' LIMIT 1; 

履行结不雅:

value key id word ???? 7

  推荐阅读

  BlackBerry高级副总裁KaivanKarimi:营造汽车行业安全文化

【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞? 【51CTO.com原创稿件】移动设备、物联网的快速成长为人们的生活带来了很多便利和改变,同时也催促着全世界的>>>详细阅读


本文标题:【MYSQL】业务上碰到的SQL问题整理集合

地址:http://www.17bianji.com/lsqh/39990.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)