我正在使用MySQL从数据表返回列。我要执行的操作是使用Order By按日期字段按升序对结果进行排序,然后还返回一个自定义列以及其他所需的列,其中该自定义列表示相对于Order By结果的索引。正确,我有以下查询,该查询仅返回所需的列并对结果进行排序:
SELECT
`alert_id`,
`message`,
`expiration`
FROM
`alert`
WHERE
`is_active` = TRUE
ORDER BY
`expiration`
但是我遇到的困难是如何还返回代表订单的自定义列。因此,例如,我希望返回以下(示例数据)行:
Pior to Order and Custom Column After the Order and Custom Column
+----------+---------+------------+ +----------+---------+------------+----------+
| alert_id | message | expiration | | alert_id | message | expiration | order_by |
+----------+---------+------------+ +----------+---------+------------+----------+
| 1 | alert1 | 2017-11-20 | | 5 | alert5 | 2017-11-16 | 1 |
| 5 | alert5 | 2017-11-16 | | 6 | alert6 | 2017-11-17 | 2 |
| 6 | alert6 | 2017-11-17 | | 1 | alert1 | 2017-11-20 | 3 |
+----------+---------+------------+ +----------+---------+------------+----------+
最佳答案
在AdrianE的帮助下,提到ROW_NUMBER函数,即使我使用的是MySQL并且该函数不可用,我也可以使用以下命令来模拟该函数:
SET @order = 0;
SELECT
`alert_id`,
`message`,
DATE_FORMAT(`expiration`, '%M %D, %Y') AS formatted_date,
(@order := @order + 1) AS order_by
FROM
`alert`
WHERE
`is_active` = TRUE
ORDER BY
`expiration`;
关于mysql - 自定义列代表订单,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47339276/