Mysql 重复的列名-内部联接
这是我的疑问:Mysql 重复的列名-内部联接,mysql,sql,Mysql,Sql,这是我的疑问: SELECT FinancialMoein.*, FinancialMoein.kol_code as kol_code , TBFC.kol_code as parent_code FROM ( SELECT TP.*, ifnull(TP.kol_code,TP.moein_code) as code, ifnull(TR.title, TP.title_en) AS titl
SELECT FinancialMoein.*,
FinancialMoein.kol_code as kol_code ,
TBFC.kol_code as parent_code
FROM (
SELECT TP.*,
ifnull(TP.kol_code,TP.moein_code) as code,
ifnull(TR.title, TP.title_en) AS title,
ifnull(TR.description, TP.description_en) AS description
FROM Tb_Financial_Coddings TP LEFT JOIN
(
SELECT title,
description,
financial_codding_id
FROM Tb_Financial_Coddings_Translations
WHERE locale = @Locale
) TR
ON TR.financial_codding_id = TP.id
WHERE TP.type = 'kol' AND TP.deleted_at IS NULL
) as FinancialMoein INNER JOIN Tb_Financial_Coddings TBFC
ON FinancialMoein.parent_id = TBFC.id;
但我得到了这个错误信息:
重复的列名“kol_代码”
select子句中的
FinancialMoein.
已包含列kol\u code
,因为它是使用包含列kol\u code
的表Tb\u Financial\u codings
导出的。然后,您再次使用相同的名称选择它,因此存在问题。您必须为所有列保留不同的名称。您可以尝试在下面的查询中忽略此问题-
SELECT FinancialMoein.*,
FinancialMoein.kol_code as kol_code_2,
TBFC.kol_code as parent_code
FROM (
SELECT TP.*,
ifnull(TP.kol_code,TP.moein_code) as code,
ifnull(TR.title, TP.title_en) AS title,
ifnull(TR.description, TP.description_en) AS description
FROM Tb_Financial_Coddings TP LEFT JOIN
(
SELECT title,
description,
financial_codding_id
FROM Tb_Financial_Coddings_Translations
WHERE locale = @Locale
) TR
ON TR.financial_codding_id = TP.id
WHERE TP.type = 'kol' AND TP.deleted_at IS NULL
) as FinancialMoein INNER JOIN Tb_Financial_Coddings TBFC
ON FinancialMoein.parent_id = TBFC.id;
相反,您可以将列
FinancialMoein.kol_code作为kol_code删除,
从外部选择忽略错误。我想FinancialMoein.
返回相同的列FinancialMoein.
将选择所有列。然后,FinancialMoein.kol_code
将专门选择该列。因此,实际上您选择同一列两次。而因为kol_code
是一个毫无意义的别名,因为您实际上并没有更改列的名称。因此,您已使用相同的名称选择了相同的列两次。这是不符合逻辑的,没有用的,也是不允许的。a)不使用*,只选择您想要的列,或b)删除冗余的显式选择FinancialMoein.kol_code