情况是这样的-我有一张桌子
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
也就是说,行的排序方式与in子句my sql语句的排序方式相同。
我的问题是-我能一直这样吗(只要我正确地排列了in子句条目)?
如果这样做失败了,并且我最终映射样式不正确,那么最终结果可能会完全混乱。另一种选择是
SELECT zyid,styid
而不是
SELECT styid
然后在结果上做更多的工作来保证正确的映射。
最佳答案
您可以尝试:
SELECT styid
FROM `styles`
WHERE zyid IN ['abcd9876','bcde0000']
ORDER BY FIELD(zyid, 'abcd9876','bcde0000')