Mysql SQL-左连接入口时间
我有一个SQL问题,我真的不明白我做错了什么。我有两个表,希望用表2中的一个条目替换表1中的条目。这工作很好,但它的时间。为了澄清,表1有20个条目,表2也有,但我的输出有400个条目。所以每个条目20次 下面是我想做的:Mysql SQL-左连接入口时间,mysql,sql,Mysql,Sql,我有一个SQL问题,我真的不明白我做错了什么。我有两个表,希望用表2中的一个条目替换表1中的条目。这工作很好,但它的时间。为了澄清,表1有20个条目,表2也有,但我的输出有400个条目。所以每个条目20次 下面是我想做的: Table1 |Name |FullName |Size | +---------+----------+----------+ |File1 |C:\File1 |8923749343| |File2 |C:\File2 |3475873
Table1
|Name |FullName |Size |
+---------+----------+----------+
|File1 |C:\File1 |8923749343|
|File2 |C:\File2 |3475873758|
+---------+----------+----------+
通常有20个条目,但现在2个就足够了
Table2
|FullName |CopyName |Name |
+---------+----------+----------+
|www\File1|C:\File1 |File1 |
|www\File2|C:\File2 |File2 |
+---------+----------+----------+
我现在的目标是从表2中获得具有全名的表1,而不是表1。
我尝试的是:
SELECT t1.Name, t2.FullName, t1.Size
FROM Table1 t1, Table2 t2
LEFT JOIN Table1 ON Table1.FullName=Table2.CopyName;
这就是我得到的:
Table1
|Name |FullName |Size |
+---------+----------+----------+
|File1 |www\File1 |8923749343|
|File1 |www\File1 |8923749343|
|File2 |www\File2 |3475873758|
|File2 |www\File2 |3475873758|
+---------+----------+----------+
这就是我想要的:
Table1
|Name |FullName |Size |
+---------+----------+----------+
|File1 |www\File1 |8923749343|
|File2 |www\File2 |3475873758|
+---------+----------+----------+
所以从技术上说,我做对了,但出于某种原因,我做对了。在这里,我得到了每两次,在我最初的尝试每20次。我做错了什么
谢谢你的建议 切勿在FROM子句中使用逗号。始终使用正确的显式联接语法
试试这个:
SELECT t1.Name, t2.FullName, t1.Size
FROM Table2 t2 LEFT JOIN
Table1 t1
ON t1.FullName = t2.CopyName;
您的查询有两个对表1的引用。因此,您得到的是一个笛卡尔乘积,介于它和您想要的实际联接之间。切勿在FROM子句中使用逗号。始终使用正确的显式联接语法
试试这个:
SELECT t1.Name, t2.FullName, t1.Size
FROM Table2 t2 LEFT JOIN
Table1 t1
ON t1.FullName = t2.CopyName;
您的查询有两个对表1的引用。因此,您得到的是一个笛卡尔乘积,介于该乘积和您想要的实际联接之间。您应该从查询中删除该行,表2 t2
SELECT t1.Name, t2.FullName, t1.Size
FROM Table1 t1
LEFT JOIN Table2 t2 ON t2.CopyName=t1.FullName;
您应该从查询表2中删除该行
SELECT t1.Name, t2.FullName, t1.Size
FROM Table1 t1
LEFT JOIN Table2 t2 ON t2.CopyName=t1.FullName;
哦,对了,忘了那个脸掌,谢谢你的帮助!哦,对了,忘了那个脸掌,谢谢你的帮助!