我在使用 SQL 时遇到了问题,但我并没有真正弄清楚自己做错了什么。我有两个表,想用表 2 中的一个条目替换表 1。这工作正常,但需要时间。澄清一下,Table1 有 20 个条目,Table2 也有,但我的输出有 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 |
+---------+----------+----------+
我现在的目标是从 Table2 而不是 Table1 获取带有 FullName 的 Table1。 我尝试了什么:
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
子句中使用逗号。 始终使用正确、明确的 JOIN
语法。
试试这个:
SELECT t1.Name, t2.FullName, t1.Size
FROM Table2 t2 LEFT JOIN
Table1 t1
ON t1.FullName = t2.CopyName;
您的查询有两个对 Table1
的引用。因此,您将得到它与您想要的实际 JOIN
之间的笛卡尔积。
关于mysql - SQL - LEFT JOIN 条目时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41872446/