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

如何根据特定的外部值对MySQL结果进行排序?,mysql,Mysql,以下是我的数据库表: Field - ID, name Order - Order ID, name, etc. OrderField - Order ID - Field ID - Value 例如,字段名可以是“First name”,OrderField值可以是“James” 仅使用MySQL查询,如何根据OrderFields对订单进行有效排序?具体来说: 假设我想要一个按“名字”字段排序的订单列表,并且我已经有了它的字段ID。我如何编写查询以包含一个orderby

以下是我的数据库表:

Field
  - ID, name
Order
  - Order ID, name, etc.
OrderField
  - Order ID
  - Field ID
  - Value
例如,字段名可以是“First name”,OrderField值可以是“James”

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


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

您的查询应该类似于:

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是“First Name”字段的id。

如果您的订单未填充“名字”字段,则使用外部联接-在这种情况下仍将检索这些订单。如果你确信这永远不会发生(或者你不想让他们被选中),用一个内部连接替换它。

顺便说一下,这是一个很好的解释。