【发布时间】:2011-03-02 05:13:10
【问题描述】:
我有这样的看法:
TABLE_TYPE
(code,name)
(1,'Computer')
(2,'Television')
(3,'Radio')
TABLE_THING
(code,name,type=TABLE_TYPE:code)
(-9999, 'ThingFirst',1)
(1,'Thing1',1)
(2,'Thing2',2)
(3,'Thing3',2)
(4,'Thing4',3)
(5,'Thing5',1)
VIEW_THINGS
(code,name,thingtype)
(-9999, 'ThingFirst','Computer')
(1,'Thing1','Computer')
(2,'Thing2','Television')
(3,'Thing3','Television')
(4,'Thing4','Radio')
(5,'Thing5','Computer')
查询:
select * from VIEW_THINGS where code in (-9999,1,2,3,4,5)
结果是:
(-9999, 'ThingFirst',NULL)
结果应该是:
(-9999, 'ThingFirst','Computer')
(1,'Thing1','Computer')
(2,'Thing2','Television')
(3,'Thing3','Television')
(4,'Thing4','Radio')
(5,'Thing5','Computer')
怎么了????
提示1:当我从 IN 子句中退出负值 (-9999) 时,我会得到:
(1,'Thing1','Computer')
(2,'Thing2','Television')
(3,'Thing3','Television')
(4,'Thing4','Radio')
(5,'Thing5','Computer')
提示2:如果我从总视图结果中进行选择,我会得到正确的数据:
select * from (select * from VIEW_THINGS as T) where code in (-9999,1,2,3,4,5)
结果:
(-9999, 'ThingFirst','Computer')
(1,'Thing1','Computer')
(2,'Thing2','Television')
(3,'Thing3','Television')
(4,'Thing4','Radio')
(5,'Thing5','Computer')
【问题讨论】:
-
SHOW CREATE TABLE TABLE_TYPE; SHOW CREATE TABLE TABLE_THING; SHOW CREATE TABLE VIEW_THINGS;的输出是什么?