如何根据特定的外部值对MySQL结果进行排序?

时间:2009-07-22 04:25:03

标签: mysql

以下是我的数据库表:

Field
  - ID, name
Order
  - Order ID, name, etc.
OrderField
  - Order ID
  - Field ID
  - Value

例如,字段名称可能是“名字”,而OrderField值可能是“詹姆斯”。

仅使用MySQL查询,如何根据OrderFields有效地对订单进行排序?更具体一点:

我想要一个按“名字”字段排序的订单列表,我已经有了它的字段ID。如何编写查询以包含ORDER BY语句,以按与订单关联的“名字”OrderField进行排序?

1 个答案:

答案 0 :(得分:1)

您的查询应该是:

SELECT Order.*, OrderField.Value
  FROM Order
  LEFT OUTER JOIN OrderField ON Order.`Order ID` = OrderField.`Order ID`
 WHERE OrderField.`Field ID` = :firstNameFieldId
 ORDER BY OrderField.Value

:firstNameFieldId是“名字”字段的id 如果您的订单没有填充“名字”字段,则使用外部联接 - 在这种情况下,它们仍将被检索。如果您确定这种情况永远不会发生(或者您不希望它们被选中),请将其替换为内连接。