我如何编写SQL查询(如果正确)有关系吗
嗨,伙计们,我刚刚写了两个查询,结果和我想问你们的一样,我如何写它是否重要: (一) (二)我如何编写SQL查询(如果正确)有关系吗,sql,select,Sql,Select,嗨,伙计们,我刚刚写了两个查询,结果和我想问你们的一样,我如何写它是否重要: (一) (二) 你的写作方式重要吗 对。首先,仅仅因为两个查询在数据上返回相同的结果集并不意味着它们在逻辑上做相同的事情。例如,select 2*2和select 1+3返回相同的值,但它们没有进行相同的计算。SQL查询也是如此 在您的情况下,查询是相同的。对于任何一组数据,它们都将返回相同的结果集 其次,即使查询在功能上完全相同,数据库也可以以不同的方式实现版本。这通常采用不同的底层算法的形式(您可能会惊讶于有多少种
你的写作方式重要吗 对。首先,仅仅因为两个查询在数据上返回相同的结果集并不意味着它们在逻辑上做相同的事情。例如,
select 2*2
和select 1+3
返回相同的值,但它们没有进行相同的计算。SQL查询也是如此
在您的情况下,查询是相同的。对于任何一组数据,它们都将返回相同的结果集
其次,即使查询在功能上完全相同,数据库也可以以不同的方式实现版本。这通常采用不同的底层算法的形式(您可能会惊讶于有多少种方法可以实现连接
)。这可能适用于您的情况,因为in
和join
通常有不同的算法
第三点可能是最重要的。应该编写查询,以便人类能够阅读、理解和维护它们。大多数人觉得嵌套的in
s有点难以理解(而嵌套的not in
s对于普通人来说是很难理解的)。另一方面,join
s更一般,需要理解才能有效地使用SQL
您主要考虑的应该是查询是否真的符合您的要求。其次是可读性、清晰性和可维护性。如何编写它很重要吗 对。首先,仅仅因为两个查询在数据上返回相同的结果集并不意味着它们在逻辑上做相同的事情。例如,
select 2*2
和select 1+3
返回相同的值,但它们没有进行相同的计算。SQL查询也是如此
在您的情况下,查询是相同的。对于任何一组数据,它们都将返回相同的结果集
其次,即使查询在功能上完全相同,数据库也可以以不同的方式实现版本。这通常采用不同的底层算法的形式(您可能会惊讶于有多少种方法可以实现连接
)。这可能适用于您的情况,因为in
和join
通常有不同的算法
第三点可能是最重要的。应该编写查询,以便人类能够阅读、理解和维护它们。大多数人觉得嵌套的in
s有点难以理解(而嵌套的not in
s对于普通人来说是很难理解的)。另一方面,join
s更一般,需要理解才能有效地使用SQL
您主要考虑的应该是查询是否真的符合您的要求。其次是可读性、清晰性和可维护性。这两个查询都提供相同的结果,但都很简单 如果是SQL,您将遇到性能问题。 使用WHERE子句会增加执行时间 加入。在第一个查询中,使用JOIN和WHERE子句 与第二次查询相比,它以最快的速度获取结果。使用 在第一个查询中,连接每个where而不是where条件可以更快地获取数据 而不是下面提供的两个查询
SELECT C.First_Name, C.monthly_discount, C.pack_id, C.main_phone_num
FROM customers C
INNER JOIN packages P
ON P.pack_id = C.pack_id
INNER JOIN sectors S
ON S.sector_id = P.sector_id
AND S.sector_name = 'business'
这两个查询都提供相同的结果,但在 如果是SQL,您将遇到性能问题。 使用WHERE子句会增加执行时间 加入。在第一个查询中,使用JOIN和WHERE子句 与第二次查询相比,它以最快的速度获取结果。使用 在第一个查询中,连接每个where而不是where条件可以更快地获取数据 而不是下面提供的两个查询
SELECT C.First_Name, C.monthly_discount, C.pack_id, C.main_phone_num
FROM customers C
INNER JOIN packages P
ON P.pack_id = C.pack_id
INNER JOIN sectors S
ON S.sector_id = P.sector_id
AND S.sector_name = 'business'
您正在使用的
RDBMS
。我可能会选择您正在使用的EXISTS/JOIN
组合RDBMS
。我可能会选择EXISTS/JOIN
combination谢谢你在理解sql方面帮了我大忙多谢你在理解sql方面帮了我大忙多谢你在理解sql方面帮了我大忙这与问题中的两个查询不同。(这可能会导致同一客户被多次选中)而且“where子句中的条件”代价高昂的想法完全是胡说八道,IMHO。这与问题中的两个查询不同。(这可能导致同一客户被多次选中)而且“where子句中的条件”代价高昂的想法完全是胡说八道,IMHO。
SELECT C.First_Name, C.monthly_discount, C.pack_id, C.main_phone_num
FROM customers C
INNER JOIN packages P
ON P.pack_id = C.pack_id
INNER JOIN sectors S
ON S.sector_id = P.sector_id
AND S.sector_name = 'business'