SELECT 0100002562
FROM
(SELECT KEHHAO FROM FIL_BDSKH) FIL_BDSKH
结果:323行
SELECT KEHHAO
FROM FIL_BDSKH
WHERE KEHHAO = 0100002562
结果:1行
答案 0 :(得分:1)
SELECT 0100002562
FROM
(SELECT KEHHAO FROM FIL_BDSKH) FIL_BDSKH
返回FIL_BDSKH
中的所有行,因为您没有WHERE
的“选择”。 (SELECT KEHHAO FROM FIL_BDSKH)
返回所有行,因此也返回非子查询。
SELECT KEHHAO
FROM FIL_BDSKH
WHERE KEHHAO = 0100002562
返回1行,因为您只有KEHHAO = 0100002562
一行。 “ WHERE
”将返回此特定行。
答案 1 :(得分:0)
这样想:
select 8 from employee; // this will return 8 the number of times there are as many
columns in employee table
其中
select sal from employee where sal=200;//here the where will filter the rows
according to the column having value of 200
所以在您的情况下:
SELECT 0100002562
FROM
(SELECT KEHHAO FROM FIL_BDSKH) FIL_BDSKH
这将打印数字,与kehhao被选择的行数一样多。和
SELECT KEHHAO
FROM FIL_BDSKH
WHERE KEHHAO = 0100002562
将过滤具有kahhao列等于0100002562的行,并打印该列本身
答案 2 :(得分:0)
这是因为在选择查询中放入硬编码值并不意味着默认情况下会像在第一个查询中一样进行匹配
SELECT 0100002562
FROM
(SELECT KEHHAO FROM FIL_BDSKH)
FIL_BDSKH
外部查询将打印多次。内部查询从FIL_BDSKH返回值。它不是等于等于的外部硬编码值0100002562 FROM KENHAO会给您。 同时,
在第二个查询中,实际过滤是在where子句中执行的,这意味着在323行中有1行匹配。
SELECT KEHHAO
FROM FIL_BDSKH
WHERE KEHHAO = 0100002562