SQL 形成多个表格 - 'left join' 与 ','
SQL FORM multiple tables - 'left join' vs ','
什么比较好?为什么?
函数一:
DELETE a FROM a LEFT JOIN b
ON a.CHROM=b.CHROM AND a.POS=b.POS
函数 b:
DELETE a FROM a, b
WHERE a.CHROM=b.CHROM AND a.POS=b.POS
最好加入FROM子句,因为它会先执行。在某些情况下,您应该加入 where 而不是此处。所以我会说功能 a 是你最好的选择。附带一提,我认为您不想在函数 a 中执行左联接,因为您加入的记录多于删除的记录。在函数a中使用INNER JOIN可能会更好更高效。一个好的做法是在删除或更新之前 select。如果你 运行 这些 select 你会得到相同的结果吗?您应该在第一个查询中获得更多结果,因为您使用的是左联接,而第二个查询类似于内部联接。
SELECT a FROM a LEFT JOIN b
ON a.CHROM=b.CHROM AND a.POS=b.POS
SELECT a FROM a, b
WHERE a.CHROM=b.CHROM AND a.POS=b.POS
查看此答案:
INNER JOIN ON vs WHERE clause
如果需要关于联接的更好解释,这对我很有帮助:
SQL JOIN and different types of JOINs
什么比较好?为什么?
函数一:
DELETE a FROM a LEFT JOIN b
ON a.CHROM=b.CHROM AND a.POS=b.POS
函数 b:
DELETE a FROM a, b
WHERE a.CHROM=b.CHROM AND a.POS=b.POS
最好加入FROM子句,因为它会先执行。在某些情况下,您应该加入 where 而不是此处。所以我会说功能 a 是你最好的选择。附带一提,我认为您不想在函数 a 中执行左联接,因为您加入的记录多于删除的记录。在函数a中使用INNER JOIN可能会更好更高效。一个好的做法是在删除或更新之前 select。如果你 运行 这些 select 你会得到相同的结果吗?您应该在第一个查询中获得更多结果,因为您使用的是左联接,而第二个查询类似于内部联接。
SELECT a FROM a LEFT JOIN b
ON a.CHROM=b.CHROM AND a.POS=b.POS
SELECT a FROM a, b
WHERE a.CHROM=b.CHROM AND a.POS=b.POS
查看此答案:
INNER JOIN ON vs WHERE clause
如果需要关于联接的更好解释,这对我很有帮助:
SQL JOIN and different types of JOINs