sql – 何时进行WHERE过滤?
参见英文答案 >
SQL order of operations7个
如果我有这样的查询: SELECT A.ID,A.Name,A.Type,B.FirstName,B.LastName,B.DateOfBirth,C.OfficeName FROM A INNER JOIN B ON A.ContactID = B.ID INNER JOIN C ON B.OfficeID = C.ID WHERE A.Type = 1 何时应用A.Type = 1过滤器?是在连接之后,还是查询查找’A’,确定它是否通过过滤器,然后只加入B和C(如果是)? 希望这是有道理的.谢谢. 解决方法首先,下面是SQL操作顺序:> FROM子句 在一个简单的查询中,过滤发生在FROM子句之后(在此部分找到连接).你上面所做的是它主要是将表连接到定义它们之间关系的链接列.在设置了记录(连接的结果)之后,然后发生WHERE子句来过滤掉其中is等于1的Type. 这是使用LEFT JOIN的另一个例子, 第一个查询: SELECT A.ID,B.DateOfBirth FROM A LEFT JOIN B ON A.ContactID = B.ID AND B.LastName = 'Michaels' vs第二次查询: SELECT A.ID,B.DateOfBirth FROM A LEFT JOIN B ON A.ContactID = B.ID WHERE B.LastName = 'Michaels' 第一个查询返回表A中的所有记录.B .LastName =’Michaels’做的是在表B与表A连接之前,它过滤掉LastName等于Michaels的所有记录.因此,表A中没有匹配表B上的过滤记录的记录将在表B的列上具有NULL值. 第二个查询不会产生与第一个查询相同的结果,并且与INNER JOIN执行完全相同,因为在记录加入后,将对结果执行另一个过滤,并仅获取LastName等于Michaels的记录. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |