Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql中的替换列值_Mysql - Fatal编程技术网

mysql中的替换列值

mysql中的替换列值,mysql,Mysql,我的示例查询: SELECT User.id, User.name, MAX(Track.id) as track_id FROM users AS User LEFT JOIN tracks AS Track ON (User.id = Track.user_id) GROUP BY Track.id 我可以别名MAXTrack.id以使其适合于Track吗?例如,像MAXTrack.id这样的东西作为Track.id,因此我可以按Track.id排序 我需要它,因为我已经有了

我的示例查询:

SELECT User.id, User.name, MAX(Track.id) as track_id 
FROM users AS User 
    LEFT JOIN tracks AS Track ON (User.id = Track.user_id) 
GROUP BY Track.id
我可以别名MAXTrack.id以使其适合于Track吗?例如,像MAXTrack.id这样的东西作为Track.id,因此我可以按Track.id排序


我需要它,因为我已经有了所有的应用程序逻辑和动态顺序,而且只有在一种情况下我需要做分组,我也使用ORM做所有这些事情。因此,我想保留所有应用程序逻辑,但在特定情况下,添加聚合字段和分组方式,并且在我的应用程序中仍然使用Track.id,这意味着MAXTrack.id是否可能?

在命名别名或选择类似列时使用backtick`

SELECT User.id, User.name, Track.name, MAX(Track.id) as `Track.id` 
from users as User 
LEFT JOIN tracks as Track ON (User.id = Track.user_id) 
GROUP BY Track.id

backtick用于转义MySQL保留字。

您最好解释一下您希望查询做什么,因为您的问题与SQL原则没有太多关联。我想选择用户及其最新曲目id,而不是将其别名为track.id-track.id是一个真实的列名。你不能给它加别名。这就是为什么我要告诉你真正的问题,而不是你破碎的解决方案。从技术上讲,你可以创建一个视图,让它看起来像一个在运行时计算值的表。但是我仍然认为您解决了一个错误的问题,您不想分享它,因为您的查询被设计破坏了:Track.name不是您所想的。第一件事:您的查询是错误的。Track.Name是一个随机名称,而不是来自最新曲目的名称。下一步-什么将结果集分解为嵌套数组?您如何知道跟踪表有一个id列?是否有一些映射?如果是,它将如何区分user.id和track.id,在结果集中它们将作为id返回?结果集合中只保留列名/别名。此方法不会替换实际的Track.id列。它变为额外列Track.Track.id,然后改为id