这是场景——我有一张 table
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')
关于mysql - SQL SELECT ...在结果顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20656196/