为什么第一个语句没有返回第二个数字?
select random_selection.randnum,
random_selection.createddate,
random_selection.ozip3,
random_selection.boxid,
random_selection.boxaddr,
random_selection.locdesc,
random_selection.loccity,
random_selection.lastmf,
random_selection.lastsat,
random_selection.boxtype,
random_selection.svcclas,
random_selection.dropzip5,
dropper_city_brk_2.dropper_id
from random_selection, dropper_city_brk_2
where random_selection.ozip3 = dropper_city_brk_2.zip3
and dropper_city_brk_2.dropper_id <> 10002
and random_selection.dropper_id is null
order by dropper_id;
第二声明:
select count(*) from random_selection where dropper_id is null;
答案 0 :(得分:2)
您的查询不一样,因此您的记录数不会相同。您首先查询正在连接2个表,而您的第二个查询仅获取一个表的记录计数。另外,您的第一个查询中有WHERE
个条款不在第二个查询中。
如果您希望第二个查询返回相同数量的记录,那么您必须使用与第一个相同的表和where子句
select count(*)
from random_selection, dropper_city_brk_2
where random_selection.ozip3 = dropper_city_brk_2.zip3
and dropper_city_brk_2.dropper_id <> 10002
and random_selection.dropper_id is null
编辑:
select count(*)
from random_selection
INNER JOIN dropper_city_brk_2
ON random_selection.ozip3 = dropper_city_brk_2.zip3
WHERE dropper_city_brk_2.dropper_id <> 10002
and random_selection.dropper_id is null
这是visual explanation of JOINs,可能有助于作为参考。
答案 1 :(得分:0)
你的意思是“为什么第二个查询没有返回第一个查询给出的行数”?如果是这样,那么可能是因为第一个查询中的交叉连接和额外的where子句。
如果由于某种原因,您认为这些完全不同的查询应该产生相同数量的行,那么您必须告诉我们您的数据是如何构建的。