|
我有一个连接两个表的视图。其中一个有一列表tinyint(1)类型列表示布尔值。
3 l/ S' G$ r5 m# M当连接时,表并不总是有条目,因此,当缺乏行时,视图需要0(假)值。我希望视图公开TINYINT(1)和NOT
. n; L, J& i0 }NULL类型列,因为它总是有默认值0,但我没有成功。
( [1 o. W) ~( f请参阅以下内容SQL重现这个问题。
3 C1 [( u! F5 v/ t3 dCREATE TABLE TEST1 ( ID bigint(20) NOT NULL AUTO_INCREMENT, PRIMARY KEY (ID)) ENGINE=InnoDB AUTO_INCREMENT=10202961 DEFAULT CHARSET=utf8;CREATE TABLE TEST2 ( TEST1_ID bigint(20) NOT NULL, MY_BOOLEAN TINYINT(1) NOT NULL DEFAULT 0' ) ENGINE=InnoDB DEFAULT CHARSET=utf8;DROP FUNCTION get_tinyint_zero;CREATE FUNCTION get_tinyint_zero() RETURNS TINYINT(1) RETURN 0;CREATE OR REPLACE VIEW TEST_VIEWAS SELECT T1.ID AS ID, COALESCE(T2.MY_BOOLEAN,get_tinyint_zero()) AS MY_BOOLEAN FROM TEST1 T1 LEFT JOIN TEST2 T2 ON T1.ID=T2.TEST1_ID;DESC TEST2;DESC TEST_VIEW;在TEST2中2 i n6 w. E! M$ ` f/ O; D
# Field,Type,Null,Key,Default,Extra'MY_BOOLEAN','tinyint(1)','NO在TEST_VIEW& X ]- H& I9 F0 G! m/ N3 H
# Field,Type,Null,Key,Default,Extra'MY_BOOLEAN','int(4)','YES','',NULL, + B6 C4 M9 d& S5 s0 Q
解决方案: |
|