情况是这样的-我有一张桌子

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')

07-24 22:20