两个查询的SQL UNION,列名重复错误

标签 sql duplicates union

我需要一个 UNION在两个查询中,每个查询都单独工作,但不能一起工作,我收到错误:重复的列名 zipcode_id , 请帮忙。

(SELECT * FROM
    ( (SELECT * FROM jobs AS j LEFT JOIN zipcode AS z ON z.zipcode_id=j.zipcode_id WHERE 1 AND source='student'
              ORDER BY postdate DESC LIMIT 20) ORDER BY search_order DESC ) 
s1)
    UNION ALL
(SELECT * FROM
        (  (SELECT * FROM jobs AS j LEFT JOIN zipcode AS z ON z.zipcode_id=j.zipcode_id WHERE 1 AND source='manager'
               ORDER BY postdate DESC LIMIT 30, 1000000) ORDER BY postdate DESC )
s2)

最佳答案

如果你真的在使用 SELECT *然后是 zipcode_id列在 Jobs 中表和Zipcode table 。正如错误消息所说,您不能让两列使用与您拥有的名称相同的名称。因为您使用的是子查询,所以如果您引用重复的列名,SQL 引擎将无法理解您的意思。例如,下面的 SQL 应该返回什么?

SELECT num FROM (SELECT 1 AS num, 2 AS num) AS SQ

使用 SELECT *在任何情况下都是一种非常糟糕的做法。

关于两个查询的SQL UNION,列名重复错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7664378/

相关文章:

python - 如何在 Python 中只处理一次重复的有序列表中的每个项目?

mysql - 删除 MySQL 中的重复行

mysql - 合并同一个表中的 2 个字段?

mysql - 如何在同一查询中多次引用 TEMPORARY 表?

java - java中如何处理sql异常?

sql - 有用的常用 SQL 数据集?

mysql - 检索具有最大值的所有行

sql - 排序字母数字列

sql - 如何消除表中两列的重复

mysql - 从 SELECT 连接数据库