我必须找到两者中的匹配记录(NPI)。我尝试了以下两个查询。但两者都给出了不同的计数结果(分别为12000和200000)。 之间:
SELECT * FROM Emblem_Attested
WHERE NPINUMBER IN (SELECT NPINUMBER FROM Empire_Attested)
和
SELECT * FROM Empire_Attested emp JOIN Emblem_Attested emb ON emp.NPINUMBER = emb.NPINUMBER
我不知道哪一个是正确的。
答案 0 :(得分:0)
IN
子句只会为Emblem_Attested
中NPINUMBER
中Empire_Attested
的行提供Emblem_Attested
。如果NPINUMBER
中的记录与Emblem_Attested
相同,则不会影响结果。
例如,如果NPINUMBER
的{{1}} 1
和Empire_Arrested
表的多个记录的NPINUMBER
为1
。然后,只有NPINUMBER
1
只会返回一条记录。
如果JOIN
中有多条记录与Emblem_Attested
相同,则NPINUMBER
会为您提供更多记录。如果Emblem_Attested
中存在重复的NPINUMBER,那么您将在JOIN
的结果中获得更多记录。这就是你所看到的。
使用JOIN
,Emblem_Attested
NPINUMBER
1
Empire_Arrested
,NPINUMBER
表有多个1
{ {1}}。然后将返回多个记录,因为联接将返回Empire_Arrested
中NPINUMBER
1
Emblem_Attested
的每条记录的记录。
答案 1 :(得分:0)
他们看起来有点不同。
有两个很大的不同。第二个从两个表中获取列,第一个只从JOIN
获取。
另一个区别是,如果Empire_Attested
中存在重复项,IN
将返回多行。 var page_list = [ 'dkey', 'dvalue' ];
var arr = []; //Create new array
arr.push(page_list); //Push page_list
var json = '{"key1":"value1","key2":"value2","key3":"value3"}';
var jp = JSON.parse(json);
for( var key in jp ) {
arr.push([key, jp[key]]); //Push key, value
}
document.write(JSON.stringify(arr))
//outputs
//[["dkey","dvalue"],["key1","value1"],["key2","value2"],["key3","value3"]]
不会返回此类重复项。
答案 2 :(得分:0)
第一个查询将返回表Emblem_Attested
中存在的NPINUMBER
Empire_Attested
的所有记录。
第二个将返回两个表的所有记录,它们在NPINUMBER
列中具有相同的值,这意味着您将获得包含两个表的列的记录集。此外,如果NPINUMBER
中Empire_Attested
的任何Emblem_Attested
出现在Emblem_Attested
以上,您将获得Emblem_Attested
中每个值的记录,{{1}列上的重复数据}}
答案 3 :(得分:0)
连接将复制父行(Empire_Attested?)。 IN查询将返回单个父行。 我正在Empire_Attested表上寻找多个条目。
您应该使用以下查询
查看SELECT NPINUMBER, COUNT(*) Qty
FROM Empire_Attested
GROUP BY NPINumber
ORDER BY COUNT(*) DESC