Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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
SQL:这两个查询之间有区别吗_Sql - Fatal编程技术网

SQL:这两个查询之间有区别吗

SQL:这两个查询之间有区别吗,sql,Sql,给定此数据库模式: 以下两个查询之间是否存在差异: SELECT NAME, MIN(MOVIEYEAR - YEAR(BIRTHDATE)) AS DEBUT_AGE FROM STARSIN JOIN MOVIESTAR ON STARNAME = NAME GROUP BY NAME; SELECT NAME, MOVIEYEAR - YEAR(BIRTHDATE) AS DEBUT_AGE FROM MOVIESTAR LEFT JOIN STARSIN ON NAME = STAR

给定此数据库模式:

以下两个查询之间是否存在差异:

SELECT NAME, MIN(MOVIEYEAR - YEAR(BIRTHDATE)) AS DEBUT_AGE
FROM STARSIN
JOIN MOVIESTAR ON STARNAME = NAME
GROUP BY NAME;

SELECT NAME, MOVIEYEAR - YEAR(BIRTHDATE) AS DEBUT_AGE
FROM MOVIESTAR
LEFT JOIN STARSIN ON NAME = STARNAME
WHERE MOVIEYEAR IS NOT NULL
GROUP BY NAME
HAVING MIN(MOVIEYEAR);

我想他们会返回相同的结果,我错了吗?

你的第二个条件是不完整的。
第二个也会跳过第一个未处理的Movieyear为NULL的任何行(当然,这可能是多余的,取决于Movieyear是否为NULL)

第二个不应该编译-在
HAVING MIN(Movieyear)
之后需要一些东西,比如
HAVING MIN(Movieyear)='2010'
为什么不运行它们并查看它生成的结果或执行计划?您是否尝试运行这两个程序以查看它们是否返回相同的结果?什么;通过空检查将
内部联接
转换为
左联接
的意义是什么?您使用的是哪种DBMS?@DanielRusev您使用的是哪种数据库服务器?我从未见过一个系统允许
在没有操作员的情况下拥有
有MIN(MOVIEYEAR)
应该是什么意思?MOVIEYEAR不可为null,因为它是主键的一部分,所以,我认为,两个查询都会跳过MOVIEYEAR可能为null的行。是的,那么就不需要where MOVIEYEAR不为null。第二个条件如何,您希望它做什么?