如何在MySQL中选择所有列加上一个别名列

Mic*_*ace 5 mysql query select alias mysql-8.0

这是一个简单的问题,但我找不到答案。

我想使用SELECT *语句选择表中的所有列,但我还需要通过这种方式为 UUID 列添加别名:BIN_TO_UUID(ID) as ID

我需要这样的东西:

SELECT BIN_TO_UUID(ID) AS ID, * FROM TABLE_NAME
Run Code Online (Sandbox Code Playgroud)

另外,最好删除别名的原始列,以免同一列两次具有不同的名称,但前提是这不会向查询添加更多文本,因为我将不得不对所有 16 个表重复此操作。

Mic*_*ace 6

我想出了解决办法。我简单地重复了表名,如下所示:

\n\n
SELECT bin_to_uuid(id) as uuid, table_name.* FROM table_name\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,如果您有一个不需要重复表名称的解决方案,我会赞成您的答案,因为在所有查询中重复所有表名称会使我的代码有点膨胀。

\n\n

编辑

\n\n

正如 @ypercube\xe1\xb5\x80\xe1\xb4\xb9 和 @Akina 的评论中所建议的,看起来*选择器位置在 MySQL 中受到限制。如果您将其移至*第一个位置,则一切正常:

\n\n
SELECT *, bin_to_uuid(id) as uuid FROM table_name\n
Run Code Online (Sandbox Code Playgroud)\n

  • @Akina 实际上他们确实解决了语法错误。这是 MySQL 的错误/限制:https://dbfiddle.uk/?rdbms=mysql_5.6&fiddle=028acdf65f1466ffbedfec16a8ef3204 将 * 移到 SELECT 列表中的第一个是解决该问题的一种方法。使用“SELECT ..., t.*”代替“SELECT ..., *”是另一种情况。 (2认同)