mysql表中有a时间列,a得分列,b时间列,b得分列,c时间列,c得分,如何查询a,b,c时间的最新值,返回其列名,及对应得分
时间: 2024-03-24 15:36:41 浏览: 9
你可以使用以下SQL语句进行查询:
```
SELECT
latest_time_column,
latest_score,
latest_time
FROM (
SELECT
CASE
WHEN a.time > b.time AND a.time > c.time THEN 'a'
WHEN b.time > a.time AND b.time > c.time THEN 'b'
ELSE 'c'
END AS latest_time_column,
CASE
WHEN a.time > b.time AND a.time > c.time THEN a.score
WHEN b.time > a.time AND b.time > c.time THEN b.score
ELSE c.score
END AS latest_score,
CASE
WHEN a.time > b.time AND a.time > c.time THEN 'a_time'
WHEN b.time > a.time AND b.time > c.time THEN 'b_time'
ELSE 'c_time'
END AS latest_time
FROM
table_name a
JOIN table_name b ON a.id = b.id
JOIN table_name c ON a.id = c.id
WHERE
a.time = (SELECT MAX(time) FROM table_name WHERE id = a.id)
OR b.time = (SELECT MAX(time) FROM table_name WHERE id = b.id)
OR c.time = (SELECT MAX(time) FROM table_name WHERE id = c.id)
) AS latest_scores_table
```
这个查询会返回一个结果集,其中包含三列:`latest_time_column`、`latest_score`和`latest_time`。
- `latest_time_column`列表示最新时间所在的列名,如果最新时间在`a`列,则该列值为`'a'`,如果最新时间在`b`列,则该列值为`'b'`,否则为`'c'`。
- `latest_score`列表示最新时间的得分。
- `latest_time`列表示最新时间所在的列的时间列名,如果最新时间在`a`列,则该列值为`'a_time'`,如果最新时间在`b`列,则该列值为`'b_time'`,否则为`'c_time'`。
你可以将`table_name`替换为你的表名,`a`、`b`和`c`替换为你的时间列名和得分列名。
阅读全文