Sql 从人物、人物电子邮件、成员或内部加入中选择*

Sql 从人物、人物电子邮件、成员或内部加入中选择*,sql,inner-join,Sql,Inner Join,可能重复: 我有以下两个代码: SELECT * FROM people,people_emails,members WHERE people_emails_person=people_id AND members_person=people_id SELECT * FROM people INNER JOIN people_emails ON people_id = people_emails_person INNER JOIN members ON people_id = members

可能重复:

我有以下两个代码:

SELECT * FROM people,people_emails,members
WHERE people_emails_person=people_id
AND members_person=people_id

SELECT * FROM people
INNER JOIN people_emails ON people_id = people_emails_person
INNER JOIN members ON people_id = members_person

它们都产生相同的结果,但使用哪个查询正确/更好

目前这两个查询完全相同。第一种使用“旧样式”的联接

使用第一种样式非常“过时”。我认为,当样式用于表示外部连接和右侧连接时,样式就不那么清晰了


有些人总是使用第一种方式,我相信他们会说这样的方式更清晰。

目前来看,这两种查询完全相同。第一种使用“旧样式”的联接

使用第一种样式非常“过时”。我认为,当样式用于表示外部连接和右侧连接时,样式就不那么清晰了


有些人总是使用第一种风格,我相信他们会说这样的风格更清晰。

第二种风格是两种风格中的佼佼者,但两者都有改进的余地。通过选择*可以自动选择超出需要的字段。在您的情况下,由于people\u email\u person、people.people\u id和members\u person.people\u id始终具有相同的值,因此您只需要其中一个


回到你的问题,第二个更好的原因是它可能运行得更快。

第二个更好,但都有改进的余地。通过选择*可以自动选择超出需要的字段。在您的情况下,由于people\u email\u person、people.people\u id和members\u person.people\u id始终具有相同的值,因此您只需要其中一个


回到您的问题,第二个更好的原因是它可能运行得更快。

都是正确的,但是第一个查询应该更好,因为WHERE语法更面向关系模型。
无论如何,隐式JOIN ANSI语法比较旧,不太明显,不推荐使用。

都是正确的,但是第一个查询应该更好,因为WHERE语法更面向关系模型。
不管怎样,隐式JOIN ANSI语法比较旧,不太明显,不推荐使用。

它们在技术上都是等效的,但是如果要连接多个表(尤其是大型表),并且查询需要很长时间才能完成,则有时有助于控制计划顺序,这可以通过显式连接(第二个,使用
内部连接
s)和一些设置调整来完成


例如,如果您使用的是PostgreSQL,则可以设置
join\u collapse\u limit=1
,以确保查询按照您指定的确切顺序联接。这仅在使用显式联接时有效。有时候,计划会做一些奇怪的、意想不到的事情,这使得查询速度非常慢,但是如果您知道您的方式会更快,并且希望告诉计划员按照您的方式进行,您可以指定。阅读了解更多信息。当然,这取决于您所使用的SQL。

它们在技术上是等效的,但是如果您要连接多个表(特别是如果它们是大型表),并且查询需要很长时间才能完成,则有时可以帮助控制计划顺序,这可以通过显式连接完成(第二个,使用
内部连接
s)和一些设置调整

例如,如果您使用的是PostgreSQL,您可以设置
join\u collapse\u limit=1
,以确保查询按照您指定的确切顺序进行连接。这仅在使用显式连接时有效。有时计划会做一些奇怪的、意外的事情,使查询速度非常慢,但如果您知道自己的方式会更快,并且希望告诉别人如果计划者按照您的方式执行,您可以指定。阅读了解更多信息。当然,这取决于您使用的SQL。

当您说“隐式连接ANSI语法”时,您指的是第一个示例(某些读者可能不清楚)。当您说“隐式连接ANSI语法”时您所指的是第一个示例(某些读者可能不太清楚)。-旧式逗号分隔的表格列表样式已随ANSI-92 SQL标准(20年前!)而停止使用。请停止使用它-旧式逗号分隔的表格列表样式已随ANSI-92 SQL标准(20年前!)而停止使用1.请停止使用