1
30
要查找至少有一篇文章评分高于10的所有用户,请使用:
EXISTS不关心其中的SELECT语句-可以用1/0替换NULL,这将导致除以0的数学错误。。。但它不会,因为EXISTS只关心WHERE子句中的过滤。 相关性(其中p.user\u id=u.id)就是为什么称之为相关子查询的原因,除了评级比较之外,它只返回id值匹配的USERS表中的行。 EXISTS的速度也更快,这取决于具体情况,因为一旦满足条件,它就会返回true—重复并不重要。 |
2
2
您可以联接表以查找相关用户,并使用DISTINCT,这样每个用户最多只能在结果集中出现一次,即使他们有多篇评级为>的文章;10:
|
3
1
|
4
1
|
5
0
此外,这将告诉你他们的最高评级是什么。 |
6
0
你的问题的正确答案是OMG小马的答案,存在的地方更具描述性,几乎总是更快。但是“selectnull”在我看来真的很难看而且违反直觉。我见过SELECT*或SELECT 1作为这方面的最佳实践。 另一种方式,如果我们正在收集答案:
如果你测试的不是1,这可能会很有用。 |
hello_programmers · Mysql从其他表输出一列 1 年前 |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |
Popo · Sql查询:返回数据库中不可用的where条件 1 年前 |
Hamdan Nuramdani · 对账单中一周内不同表中的数据求和 1 年前 |
Kugelfisch · 用php为数据库加密数据 1 年前 |