gpt4 book ai didi

java - 为什么 ENUM 不能在 H2 的子查询中工作?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:22:01 26 4
gpt4 key购买 nike

具有以下架构:

CREATE TABLE FOOD (
SERIAL_NUMBER BIGINT,
FOOD_TYPE ENUM('FRUIT','VEGGIE','MEAT')
);

和以下数据:

INSERT INTO FOOD(SERIAL_NUMBER, FOOD_TYPE)
VALUES(12345, 'FRUIT');

我正在尝试在 H2 中执行以下查询:

SELECT count(*) FROM (
SELECT * FROM FOOD WHERE FOOD_TYPE <> 'MEAT'
)

我收到以下错误:

Column "MEAT" not found; SQL statement:
SELECT count(*) from (
SELECT * FROM FOOD WHERE FOOD_TYPE <> 'MEAT'
) [42122-197]

如果没有 WHERE 子句或过滤 SERIAL_NUMBER 而不是 FOOD_TYPE,查询运行正常并返回 '1'。 H2 无法处理的子查询中的 ENUM 有什么问题吗?

最佳答案

我认为使用包含类型的表比使用枚举更好。来自 sqlit 的示例:

CREATE TABLE Price (
PriceId INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
Name VARCHAR(100) NOT NULL,
Type CHAR(1) NOT NULL DEFAULT ('M') REFERENCES PriceType(Type)
);

CREATE TABLE PriceType (
Type CHAR(1) PRIMARY KEY NOT NULL,
Seq INTEGER
);
INSERT INTO PriceType(Type, Seq) VALUES ('M',1);
INSERT INTO PriceType(Type, Seq) VALUES ('R',2);
INSERT INTO PriceType(Type, Seq) VALUES ('H',3);

关于java - 为什么 ENUM 不能在 H2 的子查询中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53462904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com