gpt4 book ai didi

mysql - 从具有相同列名的两个表中选择 * mySQL

转载 作者:行者123 更新时间:2023-11-29 01:35:54 25 4
gpt4 key购买 nike

假设我有两个包含很多列的表,所以我不想在查询中明确命名列名,但我想避免重名。

如果我这样做:

  CREATE TABLE new_table
SELECT a.*, b.*
FROM table1 a
INNER JOIN table2 b ON a.myID = b.myId
WHERE a.age > 10 and b.ice = 'melted'

我会收到一条错误消息:重复的列名 myId,如果 a 和 b 中的更多列名相同,我还会收到更多错误。

我如何通过自动为 a.* 和 b.* 中的所有列名添加前缀来避免此问题而不明确提及所有列名 - 这样做非常乏味!

谢谢!

最佳答案

不幸的是,如果表中有匹配的列名,您将不得不列出列。但是,您可以使用 information_schema 获取列名、格式化这些名称并在查询中复制粘贴以减轻痛苦,例如:

SELECT GROUP_CONCAT(CONCAT('a.', COLUMN_NAME)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'schema' AND TABLE_NAME = 'table';

上面的查询应该为您提供以逗号分隔的列名和 a. 前缀。然后,您可以对表 b 使用相同的查询,获取名称并在主 SELECT 查询中使用它。

更新

正如@Uueerdo 所说的那样,您也可以为列添加别名,例如:

SELECT GROUP_CONCAT(CONCAT('a.', COLUMN_NAME, ' AS a_', COLUMN_NAME))
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'schema' AND TABLE_NAME = 'table';

关于mysql - 从具有相同列名的两个表中选择 * mySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45844948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com