【问题标题】:MySQL - Duplicate columns after using Join operatorMySQL - 使用 Join 运算符后重复列
【发布时间】:2016-03-20 12:34:36
【问题描述】:

如标题中所述,我使用此 JOIN 查询获得了重复的列。 给出了几个表,我想编写选择语句来获取 需要的表格中的信息。

到目前为止,这是我的 SQL 代码:

    SELECT mitarbeiter.PNR, pfleger.PNR, Name
    from pfleger
    JOIN mitarbeiter on (mitarbeiter.PNR=pfleger.PNR)
    where Ort='Frankfurt';

执行后得到如下结果:

您可以看到问题:我有两个我不想拥有的 PNR 列。 如何删除重复项?我已经尝试过SELECT DISTINCT ...,但它并没有实现我的目标。

【问题讨论】:

  • 如果知道mitarbeiter.pnr=pfleger.pnr是基于join的,那么只需要在select中返回两者之一即可;因为他们永远是平等的。

标签: mysql join duplicates operator-keyword


【解决方案1】:

只需从选择中删除一个:

SELECT mitarbeiter.PNR, Name from pfleger JOIN mitarbeiter on (mitarbeiter.PNR=pfleger.PNR) where Ort='Frankfurt';

【讨论】:

    【解决方案2】:

    select distinct 适用于行,而不是列。在列列表中,只需选择 PNR 列之一:

    SELECT mitarbeiter.PNR, Name from pfleger JOIN mitarbeiter on (mitarbeiter.PNR=pfleger.PNR) where Ort='Frankfurt';
    

    【讨论】:

      【解决方案3】:

      在语句的select 部分中,引用任一表(mitarbeiter、pfleger)中的PNR 列,但不能同时引用两者:

      SELECT 
        mitarbeiter.PNR, 
        Name 
      from pfleger JOIN mitarbeiter on (mitarbeiter.PNR=pfleger.PNR) 
      where Ort='Frankfurt';
      

      【讨论】:

        【解决方案4】:

        正如其他用户已经提到的,您只需从SELECT 子句中删除一个字段名称。我只想补充一点,如果您加入的字段在两个表中具有相同的名称,您可以使用特殊语法,它允许将两个列作为一个单独的列引用:

        SELECT PNR, Name
        from pfleger
        JOIN mitarbeiter USING (PNR)
        where Ort='Frankfurt';
        

        【讨论】:

          猜你喜欢
          • 2021-08-11
          • 1970-01-01
          • 2021-07-23
          • 1970-01-01
          • 2016-02-02
          • 2016-06-19
          • 2015-08-02
          • 2012-02-01
          • 1970-01-01
          相关资源
          最近更新 更多