这是场景 - 我有一张桌子
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
然后对结果做更多的工作以保证正确的映射.
您可以尝试:
SELECT styid FROM `styles` WHERE zyid IN ['abcd9876','bcde0000'] ORDER BY FIELD(zyid, 'abcd9876','bcde0000')