【问题标题】:Two column name same using join in mysql在mysql中使用连接的两个列名相同
【发布时间】:2014-07-10 04:03:57
【问题描述】:

我一直在使用inner join 加入三个表。现在我最终得到的是一个连接表,其中两个列名相同并且它们具有不同的数据。一个包含位置名称,另一个包含作物名称。现在我如何访问位置名称。

我的生产表如下:

我的作物表如下:

MY位置表如下:

我的sql查询如下:

  Select * from production AS cust 
    INNER JOIN location AS comp ON cust.location_id = comp.location_id
     INNER JOIN crops AS crop ON cust.crop_id=crop.crop_id 
    where cust.year_of_production =2004 AND crop.name="paddy"

执行sql查询后的输出如下: 这里有两个 columnname 作为 name 。我想访问包含 taplejung 的名称。我不想要名称包含水稻的列。我怎么做

【问题讨论】:

  • 代替SELECT *,命名所有你想要的列...

标签: mysql


【解决方案1】:

首先SELECT * 太可怕了,evil;只需选择您想要的列

其次,你的别名真的很奇怪。它们与表名无关,因此难以阅读查询

SELECT 
  p.*,
  c.name AS crop_name

FROM products AS p

JOIN location AS l
  ON l.location_id = p.location_id

JOIN crops AS c
  ON c.crop_id = p.crop_id
 AND c.name    = "paddy"

WHERE p.year_of_production = 2004

在这里,我们选择p.*,它将选择products 表中的所有字段。接下来,我们选择c.name AS crop_name,这会将crops.name 字段添加到您的结果中别名为 crop_name

这样您就可以使用crop_name 作为结果中的字段。


除此之外,我不确定您需要其他表中的哪些其他字段,但您可以修改您的选择以获取您想要的所有字段

SELECT p.*, c.name AS crop_name, l.name AS location_name, ...

【讨论】:

    【解决方案2】:

    以下可能会有所帮助:

    Select comp.name,production_amount from production
     AS cust INNER JOIN location AS comp ON cust.location_id = comp.location_id 
    INNER JOIN crops AS crop ON cust.crop_id=crop.crop_id
     where cust.year_of_production =2004 AND crop.name="paddy"
    

    【讨论】:

      【解决方案3】:

      如果多个表中的列名相同,可以用表名指定。

      例如,

      select table1.id, table2.id from table1, table2

      或者你可以使用表别名

      select t1.id, t2.id from table1 t1, table2 t2

      没有什么好担心的。

      这同样适用于任何类型的连接。没什么新鲜的。

      【讨论】:

        【解决方案4】:

        我正在考虑两种方法:

        1. 您可以创建一个存储过程并根据您希望的外观重新编辑列名。
        2. 为了简单的方法,只需替换

          选择 *

        带有产品列。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-25
          • 1970-01-01
          • 1970-01-01
          • 2018-07-27
          • 2016-10-05
          • 1970-01-01
          相关资源
          最近更新 更多