sql - SQL/mariadb 使用 IN() 以相同顺序在多个列上进行选择
问题描述
我需要 sql 中的语法,它以与 IN() 字段中给出的相同顺序返回结果。问题是主键由两个键组成。
所以以下内容不适用:
SELECT * FROM table where id IN (4,5,6) ORDER BY FIELD (id,4,5,6);
我的桌子:
primary(column 1+2) column 3 column 4 cloumn 5......
hash | num | | |
用于理解的伪代码如下所示:
SELECT * FROM table WHERE (hash,num) IN (["fjdigjhu",5],["fgfjhgaa",2],...) ORDER BY FIELD ([hash,num],["fjdigjhu",5],["fgfjhgaa",2],...);
解决方案
我会建议一个派生表:
SELECT t.*
FROM table t JOIN
(SELECT 1 as ord, 'fjdigjhu' as hash, 5 as num UNION ALL
SELECT 2 as ord, 'fgfjhgaa' as hash, 5 as num UNION ALL
. . .
) x
USING (hash, num)
ORDER BY x.ord;
推荐阅读
- powerbi - Power BI 如何使用度量来获取 Max
- flutter - Flutter - 断言失败:第 61 行 pos 12:'_route == ModalRoute.of(context)':不正确
- python - 从 Pandas 数据框中选择组合
- android - 如何在nativescript angular中禁用android和ios中的屏幕截图
- java - Eclipse IDE 和 Spring Tools Suite 的 SQL 开发工具在哪里?为什么他们似乎在他们的市场上不可用?
- .net-core - 当我将 .Net Core 2.1 项目上传到 plesk 服务器时,找不到文件或目录
- ruby-on-rails - Ruby HABTM 关联循环
- r - 循环仅在 R 中的最后一次迭代中运行 - 循环参与者
- python - 如何通过列表解析这些操作?
- ios - IOS 通知权限警报不显示