SQL SELECT ...按结果顺序

 如果你在的时候的世界_266 发布于 2023-02-09 14:48

这是场景 - 我有一张桌子

CREATE TABLE IF NOT EXISTS `stylemaps` (
`zyid` varchar(9) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
`styid` varchar(9) CHARACTER SET ascii COLLATE ascii_bin NOT NULL DEFAULT 'zzzz0000Z',
UNIQUE KEY `zyid` (`zyid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

此表中的一组典型条目可能是

zyid        styid
qrst1234    abcd1230
abcd9876    abcd1231
pqzx4569    abcd1232
bcde0000    abcd1233

即,zyid的条目顺序是相当随机的.

现在假设我发行

SELECT styid FROM `styles` WHERE zyid in ['abcd9876','bcde0000']

我得到的结果是

abcd1231
abcd1233

即行的排序方式与我的SQL语句的IN子句相同.

我的问题是 - 我可以依赖于这种情况(只要我正确地命令IN子句条目)吗?

如果这次失败并且我最终错误地映射样式,那么最终结果可能会完全出现乱码.另一种方法是做

SELECT zyid,styid

代替

SELECT styid

然后对结果做更多​​的工作以保证正确的映射.

1 个回答
  • 您可以尝试:

      SELECT styid
        FROM `styles` 
       WHERE zyid IN ['abcd9876','bcde0000']
    ORDER BY FIELD(zyid, 'abcd9876','bcde0000')
    

    2023-02-09 14:51 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有