mysql - SQL SELECT ...在结果顺序

标签 mysql

这是场景——我有一张 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/

相关文章:

php - MySQL - 选择计数返回真

sql - MySQL 字段连接

python - 强制 Django 使用 32 位 Python

mysql - 提高 mysql 行与用户的性能

php - 减少数据库 PHP MySQL 显示的图像数量

php从base64字符串将blob插入mysql

python - Django+mySQL+virtualenv的问题

php - 如果未选中复选框,则删除数据库条目

java - 使用 Spring 和 Jdbc 访问数据库

mysql - 如何使用 GROUP BY 两次而不是 JOIN 本身?