如何根据特定的外部值对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。如果您的订单未填充“名字”字段,则使用外部联接-在这种情况下仍将检索这些订单。如果你确信这永远不会发生(或者你不想让他们被选中),用一个内部连接替换它。顺便说一下,这是一个很好的解释。