我不知道您为什么“需要将这些列维护为TINYINT
”。但是 - 一种解决方法是定义一个返回TINYINT
值的自定义函数。
create function cast2tinyint(v bigint)
returns tinyint
deterministic no sql
return v;
那么您的查询将是
SELECT isRequired
FROM tableA
UNION
SELECT
cast2tinyint(1) AS isRequired
FROM tableA
您可以测试它将结果存储到(临时)表中。
原始查询:
create temporary table tmp1
SELECT isRequired
FROM tableA
UNION
SELECT
1 AS isRequired
FROM tableA
;
show create table tmp1;
结果:
CREATE TEMPORARY TABLE `tmp1` (
`isRequired` bigint(20) DEFAULT NULL
)
使用自定义函数:
create temporary table tmp2
SELECT isRequired
FROM tableA
UNION
SELECT
cast2tinyint(1) AS isRequired
FROM tableA
;
show create table tmp2;
结果:
CREATE TEMPORARY TABLE `tmp2` (
`isRequired` tinyint(4) DEFAULT NULL
)
在 DB Fiddle 上查看