表示顺序的自定义列
Custom column to represent order
我正在使用数据 table 中的 MySQL 到 return 列。我想要做的是使用 Order By 按日期字段按升序对结果进行排序,然后 return 自定义列以及其他所需的列,其中自定义列表示与 Order By 相关的索引结果。是的,我有以下查询,它只是 returns 所需的列并对结果进行排序:
SELECT
`alert_id`,
`message`,
`expiration`
FROM
`alert`
WHERE
`is_active` = TRUE
ORDER BY
`expiration`
但我遇到的困难是如何 return 表示订单的自定义列。因此,例如,我想要以下(样本数据)行 returned:
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`;
我正在使用数据 table 中的 MySQL 到 return 列。我想要做的是使用 Order By 按日期字段按升序对结果进行排序,然后 return 自定义列以及其他所需的列,其中自定义列表示与 Order By 相关的索引结果。是的,我有以下查询,它只是 returns 所需的列并对结果进行排序:
SELECT
`alert_id`,
`message`,
`expiration`
FROM
`alert`
WHERE
`is_active` = TRUE
ORDER BY
`expiration`
但我遇到的困难是如何 return 表示订单的自定义列。因此,例如,我想要以下(样本数据)行 returned:
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`;