在mysql中使用join时两列名称相同
我一直在使用在mysql中使用join时两列名称相同,mysql,Mysql,我一直在使用内部联接联接三个表。现在我最终得到的是一个联接表er,其中两个列名相同,数据不同。一个包含locationname,另一个包含作物名称。现在如何访问locationname 我的生产表如下: 我的作物表如下: 我的位置表如下: 我的sql查询如下: Select * from production AS cust INNER JOIN location AS comp ON cust.location_id = comp.location_id INNE
内部联接
联接三个表。现在我最终得到的是一个联接表er,其中两个列名相同,数据不同。一个包含locationname,另一个包含作物名称。现在如何访问locationname
我的生产表如下:
我的作物表如下:
我的位置表如下:
我的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查询后的输出如下:
这里有两个列名称作为名称。我想访问包含taplejung的名称。我不想要名称包含paddy的列。我该怎么做
首先
选择*
很可怕,而且;只需选择所需的列
SELECT p.*, c.name AS crop_name, l.name AS location_name, ...
其次,你的化名真的很奇怪。它们与表名没有关系,因此很难读取查询
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作为crop\u name
,这将把crops.name
字段添加到别名为cropu name
的结果中
通过这种方式,您可以将crop\u name
用作结果中的字段
除此之外,我不确定您还需要其他表中的哪些字段,但您可以修改select以获取所有需要的字段
SELECT p.*, c.name AS crop_name, l.name AS location_name, ...
如果在多个表中有相同的列名,则可以使用表名指定它 比如说,
从表1、表2中选择表1.id、表2.id
也可以使用表别名
从表1 t1、表2 t2中选择t1.id、t2.id
没什么好担心的
这同样适用于任何类型的联接。没什么新鲜事。我在想两种方法:
对于产品栏。可能有以下帮助:
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"
选择*,而不是
,命名所有需要的列。。。