【发布时间】:2018-06-06 02:44:55
【问题描述】:
有一个数据集如下图;
例如,当 event_type 的输入为 4、1、2、3 时,我想按此顺序从 cnt_stamp 获取 3、999、3、9。我创建了如下所示的 SQL 代码,但无论输入的顺序如何,它似乎总是返回 999、3、9、3。 如何修复 SQL 以实现此目的?感谢您抽出宝贵时间,如果您有任何问题,请告诉我。
SELECT `cnt_stamp` FROM `stm_events` WHERE `event_type` in (4,1,2,3)
【问题讨论】:
-
虽然这样做很奇怪,但您可以在 SELECT * FROM stm_events WHERE event_type = 4 UNION ALL SELECT * FROM stm_events WHERE event_type = 1 UNION ALL SELECT * FROM stm_events WHERE event_type = 2 中使用 UNION UNION ALL SELECT * FROM stm_events WHERE event_type = 3 - 但是这看起来很糟糕。
-
@NoChance 这可能是实现它的唯一方法......
-
我上面的 SELECT 有点冒险,因为它取决于 SELECT 语句的顺序。此外,也不能保证 db 在呈现结果时一定会遵循 SELECT 语句的顺序。保证结果顺序的唯一方法是使用 SORT BY,因此上述解决方案可能有效,但不能保证始终有效。
标签: sql select where in-operator