Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL-左连接入口时间_Mysql_Sql - Fatal编程技术网

Mysql SQL-左连接入口时间

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

我有一个SQL问题,我真的不明白我做错了什么。我有两个表,希望用表2中的一个条目替换表1中的条目。这工作很好,但它的时间。为了澄清,表1有20个条目,表2也有,但我的输出有400个条目。所以每个条目20次

下面是我想做的:

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;
哦,对了,忘了那个脸掌,谢谢你的帮助!哦,对了,忘了那个脸掌,谢谢你的帮助!