mysql - 并集期间出现重复的列名错误

标签 mysql count union

我正在使用此查询来计算 2 个表的行数,在查询末尾使用联合和别名,但它不起作用:

SELECT COUNT(*) FROM (
(SELECT  * FROM bills INNER JOIN cats INNER JOIN suppliers
INNER JOIN new_cards
WHERE new_cards.`Card_Code` LIKE '%8%'
AND bills.`Sup_ID` = suppliers.`Sup_ID`
AND new_cards.`Sup_ID`  = suppliers.`Sup_ID`
AND cats.`Cat_ID` = bills.`Cat_ID`
AND bills.`Cat_ID` = cats.`Cat_ID`
AND new_cards.`Bill_ID` = bills.`Bill_ID`)
UNION
(SELECT * FROM bills INNER JOIN cats INNER JOIN suppliers
INNER JOIN sold_cards WHERE
sold_cards.`Card_Code` LIKE '%8%'
AND bills.`Sup_ID` = suppliers.`Sup_ID`
AND sold_cards.`Sup_ID`  = suppliers.`Sup_ID`
AND cats.`Cat_ID` = bills.`Cat_ID`
AND bills.`Cat_ID` = cats.`Cat_ID`
AND sold_cards.`Bill_ID` = bills.`Bill_ID`)
) w

错误是

Error Code: 1060
Duplicate column name 'Cat_ID'

最佳答案

似乎在 cats 和 bills 表中都有一个名为 Cat_ID 的列。当您在表的联接上执行 select * 时,您将获得重复的列名。

一些可能的解决方案:

  • 重命名其中一个表中的 Cat_ID 列
  • 明确命名您选择的列,即使用“bills.Cat_ID AS new_name, ...”代替“*”。

关于mysql - 并集期间出现重复的列名错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27204900/

相关文章:

php - 使用codeigniter在MySQL中通过foreach保存多个复选框数据

sql - MySQL 查询在逗号分隔的字符串中查找值

mysql - SQL - OUTER JOIN a UNION-ed 表

MYSQL 连接没有带来正确的结果

python - 如何在所有外键之后执行 SELECT *

MySQL:COUNT 太高,因为表中有多个条目

mysql - 选择其他列也有重复项的 lead_id

MYSQL Count, LEFT OUTER JOIN with 0 count on a simple case

MySQL:在 UNION 子选择中使用索引

php - MySQL从表中选择数据并内连接来自另外两个相同表的所有选择