首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sql查询差异

Sql查询差异
EN

Stack Overflow用户
提问于 2013-02-25 08:52:50
回答 3查看 66关注 0票数 2

我想知道这两个版本在结果上是否等价,哪个更适合性能原因,为什么?选择版本中的嵌套选择

代码语言:javascript
复制
select 
 t1.c1, 
 t1.c2, 
 (select Count(t2.c1) from t2 where t2.id = t1.id) as count_t 
from 
 t1 

代码语言:javascript
复制
select t1.c1,t1.c2, Count(t2.c1)
from t1,t2
where t2.id= t1.id
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-25 08:57:37

第一个查询类似于这个查询-

代码语言:javascript
复制
SELECT
  t1.c1,
  t1.c2,
  COUNT(t2.c1)
FROM t1
  LEFT JOIN t2
    ON t2.id = t1.id;

它从第一个表中选择所有记录,从第二个表中选择所有匹配的记录(这是左加入条件)。

第二个是模拟这个查询-

代码语言:javascript
复制
SELECT
  t1.c1,
  t1.c2,
  COUNT(t2.c1)
FROM t1
  JOIN t2
    ON t2.id = t1.id;

它只在两个表中选择匹配的记录(它是内部连接条件)。

票数 4
EN

Stack Overflow用户

发布于 2013-02-25 08:56:59

嗯,它们是不同的查询。如果表t1中没有匹配的id,顶部的行将从t2中选择所有行,返回0作为计数。

第二个查询将只返回t1和t2都有一个id相同的行的行。

票数 2
EN

Stack Overflow用户

发布于 2013-02-25 09:04:04

第一个查询可能会遇到大数据集上的性能问题。第二个查询可能存在笛卡儿问题。如果表2没有相关记录,根据您的意图,我将使用一个联接或左连接,然后添加一个group语句来控制笛卡儿。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15063196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档