【问题标题】:Using ORDER BY with WHERE IN将 ORDER BY 与 WHERE IN 一起使用
【发布时间】:2013-10-31 09:28:17
【问题描述】:

在我的 SQLite 查询中:

"SELECT * FROM menu WHERE ID IN (" & optList & ") ORDER BY seqno"

optList 是一个 ID 列表,类似于:

"01","02","14","03"

这些行对应的 seqno 值为:01 02 03 04,这是我需要的顺序,但返回的行按 ID 顺序排列,即01, 02, 14, 03

使用WHERE INORDER BY 是否不起作用和/或是否有其他方法可以按所需顺序返回行?

【问题讨论】:

  • 当然ORDER BY 在这种情况下有效!一些澄清:你从哪里调用 SQL(vb.netandroid,...)? optList 是字符串还是字符串数组? IDseqno 是两位数的字符串吗?
  • 您的代码看起来正确。请在SQLFiddle 上创建一个示例。
  • 我正在使用 B4A。 optlist 是一个字符串,例如“'01','02','14','03'”。 ID 是整数,seqno 是 2 位文本。
  • 以前没用过 SQLFiddle,虽然可以看到如何创建表,但在 SQL 中不够专业,无法向其中插入数据,对不起。
  • 在 SQLFiddle 中有一个工作示例,它确实产生了正确的顺序。必须再次检查 B4A 中的工作,也许它在做一些奇怪的事情!

标签: sqlite where sql-order-by


【解决方案1】:

这对我来说很好用

SELECT *
FROM `accolades`
WHERE id
IN ( 1, 3, 4, 5 )
 order by id asc

【讨论】:

  • 但是您按 WHERE 子句中的同一列进行排序。就我而言,我想按与我在 WHERE 中使用的顺序不同的另一列进行排序。
  • 我试过了,它对我有用 SELECT * FROM accolades WHERE id IN (1, 3, 4, 5) ORDER BY accoladable_id ASC LIMIT 0, 30
猜你喜欢
  • 1970-01-01
  • 2020-06-22
  • 2015-07-09
  • 1970-01-01
  • 2016-04-03
  • 2012-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多