SQL连接条件,几个结果

SQL连接条件,几个结果,sql,sql-server,join,Sql,Sql Server,Join,我有一个SQL使用库数据库的练习,在下面的图片中,你们可以看到一些表是如何连接的 我需要把1996年以前出生的孩子(少年)交给图书馆成年成员的地址。我已经准备好了SQL语句。 这句话对吗?可能不会,有一种选择,即不同成员的地址可以相同。我不知道如何理解这句话 SQL语句: SELECT DISTINCT a.street,a.city,a.state,a.zip FROM adult AS a JOIN juvenile AS j ON a.member_no = j.adult_member

我有一个SQL使用库数据库的练习,在下面的图片中,你们可以看到一些表是如何连接的

我需要把1996年以前出生的孩子(少年)交给图书馆成年成员的地址。我已经准备好了SQL语句。 这句话对吗?可能不会,有一种选择,即不同成员的地址可以相同。我不知道如何理解这句话

SQL语句:

SELECT DISTINCT a.street,a.city,a.state,a.zip FROM adult AS a
JOIN juvenile AS j
ON a.member_no = j.adult_member_no
WHERE YEAR(j.birth_date) < 1996
选择与成人不同的a.street、a.city、a.state、a.zip作为
加入少年为j
在a.member_no=j.成人_member_no上
其中年份(出生日期)<1996年
这是您的查询:

SELECT DISTINCT a.street, a.city, a.state, a.zip
FROM adult a JOIN
     juvenile j
     ON a.member_no = j.adult_member_no
WHERE YEAR(j.birth_date) < 1996;
您可以将此查询描述为:“选择1996年之前出生的未成年人。”

请注意,此版本不需要
选择distinct
(除非
成人
表中存在重复项,这是不可能的)。从技术上讲,这种连接形式称为“半连接”。“semi”是因为它可以在第一个匹配行处停止。一旦找到适合某个成年人的少年,就不需要再找到了。

这是您的问题:

SELECT DISTINCT a.street, a.city, a.state, a.zip
FROM adult a JOIN
     juvenile j
     ON a.member_no = j.adult_member_no
WHERE YEAR(j.birth_date) < 1996;
您可以将此查询描述为:“选择1996年之前出生的未成年人。”


请注意,此版本不需要
选择distinct
(除非
成人
表中存在重复项,这是不可能的)。从技术上讲,这种连接形式称为“半连接”。“semi”是因为它可以在第一个匹配行处停止。一旦为某个成年人找到了合适的青少年,就不需要再找了。

我的说法是错误的,有大量的“成年人”拥有相同的地址。关于你的第二句话,如果我写SELECT*FROM juvenant而不是SELECT 1 FROM juvenant,有什么不同吗?这只是为了表演?还是不相关?@jadupl。这无关紧要。
select
的参数被忽略。我的说法是错误的,有大量的“成年人”拥有相同的地址。关于你的第二句话,如果我写SELECT*FROM juvenant而不是SELECT 1 FROM juvenant,有什么不同吗?这只是为了表演?还是不相关?@jadupl。这无关紧要。
select
的参数被忽略。