【问题标题】:Select * from table where id = ? and order by priority从 id = 的表中选择 *?并按优先级排序
【发布时间】:2015-07-14 14:59:37
【问题描述】:

我有一个包含这些字段的数据库:

  • id (int)
  • 姓名(文字)
  • 优先级(整数)

我想显示 id = (e.g) 13 的数据库中的值并按优先级对它们进行排序。 例如:id 为 13 且优先级为 1 的字段将首先来自另一个优先级为 2 的字段。

我该怎么做?

【问题讨论】:

  • SELECT * FROM TABLE WHERE id >= 13 ORDER BY priority ASC 认真的吗?不能研究这么多?
  • 好吧.. id >= 13 不是 OP 需要的 where:D

标签: mysql database sql-order-by where


【解决方案1】:
SELECT id,name,priority from table_name WHERE id=13 ORDER BY priority ASC;

【讨论】:

  • 你不需要明确说priority ASC 因为asc 是默认顺序。
  • 是的。供提问者理解。
【解决方案2】:

您的查询:

SELECT `id`,`name`,`priority` FROM table_name WHERE `id`=13 ORDER BY `priority` ASC;

【讨论】:

  • 你不需要明确说priority ASC 因为asc 是默认顺序。
  • 可以,但不影响代码,如果喜欢,OP可以删除它
  • 这是完美的,我在@chandran 之前回答,他回答的和我一样.. OP 将他的回答标记为最佳答案,对我来说是否定的.. 有人可以解释我吗?跨度>
  • 不知道,谁投了反对票,因为我通常不会投-1,而是在有问题时提供评论。同样,您的回答是有效的,我的 +1 也是如此。
【解决方案3】:

可以使用字段函数管理排序:

SELECT `id`,`name`,`priority` FROM table_name 
order by FIELD(priority,"13","2")

注意实际问题:您必须手动维护此订单列表(或创建一些结构来维护此列表)。

【讨论】:

  • 使用FIELD(priority, 13, 2) 订购是个坏主意,OP 只需要ORDER BY priority ASC;
  • 查询将返回所有值,而不仅仅是 id=13
猜你喜欢
  • 1970-01-01
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-03
  • 1970-01-01
  • 2011-10-09
相关资源
最近更新 更多