当前位置: 首页 > 面试题库 >

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

董建德
2023-03-14
问题内容

我需要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 * FROM
    ( (SELECT j1.* FROM jobs AS j1 LEFT JOIN zipcode AS z1 ON z1.zipcode_id=j1.zipcode_id WHERE 1 AND source='student'
              ORDER BY postdate DESC LIMIT 20) ORDER BY search_order DESC ) s1) UNION ALL
(SELECT * FROM
        (  (SELECT j2.* FROM jobs AS j2 LEFT JOIN zipcode AS z2 ON z2.zipcode_id=j2.zipcode_id WHERE 1 AND source='manager'
               ORDER BY postdate DESC LIMIT 30, 1000000) ORDER BY postdate DESC )
s2)


 类似资料:
  • 问题内容: 在两个具有相同列名的表上创建VIEW时,如何避免MySQL中的dup列名错误,如下所示 问题答案: 使用别名作为列名

  • 问题内容: 我有一个存储过程,该过程将(或应该)将记录从一个表移动到另一个表。但是,我现在想创建一个过程来对照“ TableB”中的数据检查“ TableA”中的数据 基本上,我想提取不在“ TableB”中但在“ TableA”中的任何数字,是否可以通过LEFT JOIN来做到这一点?到目前为止,我一直未能成功找到丢失的文件,并且我删除了一些文件以形成测试用例。 问题答案: 您可以使用 或:

  • 问题内容: 我有一个看起来像这样的表: 这就是我想要做的: 如果号码已经在数据库中,请不要插入新记录。 如果编号不在数据库中,但名称在数据库中,则创建一个新名称并将其插入。因此,例如,如果我有一个包含for和for的记录,我不想插入它,但是如果我得到一个包含for和for的记录,我会插入and 。我本来要检查重复项,例如: 有没有办法将两个语句组合在一起? 问题答案: 您的问题实际上有两个问题。第

  • 问题内容: 我遇到了NHibernate的间歇性问题,该问题会为实体生成查询,但是用来自完全不同(且不相关)的实体的列替换了其中的一列。 它只能替换单个列,通常可以通过重新启动应用程序来解决(尽管有时需要进行几次尝试)。 ASP.NET应用程序(.NET 4.0) 在Application_Start期间创建的SessionFactory NHibernate 3.3.1-通过代码映射完成所有映射

  • 问题内容: 查询1: 查询2: 我想将两个结果合并为两列,其中缺少一列=查询2-查询1以加快处理速度。我该怎么做?示例: 我有两个结果: // ----------------------------------------查询:1 1 2 3 4 // --------------------------------------查询:2 4 5 6 8 // ------------------

  • 问题内容: 当我这样做时(在laravel中): 它说: SQLSTATE [HY093]:无效的参数号(SQL:SELECT * FROM my_table,其中id =:id || id =:id) 但是当我这样做时(使用纯PHP): 成功了。我究竟做错了什么? PS显然,遇到问题时我运行的查询更有意义。 UPD 或多或少的真实查询: 问题答案: 从我所看到的一切都可以归结为无法处理命名参数。