gpt4 book ai didi

mysql - 枚举在mysql数据库中的使用方法

转载 作者:搜寻专家 更新时间:2023-10-30 20:45:47 25 4
gpt4 key购买 nike

我在 MySQL 数据库的表中使用了 ENUM。我怎样才能得到 type = a, b, c 的所有东西?

简单地说,如果我使用 VARCHAR,那么我可以使用:

SELECT * FROM stuff WHERE type IN ("a","b","c")

但是使用 ENUM 是行不通的。

我怎样才能得到 type = a, b, c 的所有东西?

注意:类型用作 ENUM 而不是 CHAR 或 VARCHAR。

最佳答案

您可以像这样使用 FIELD:

SELECT * FROM `stuff` WHERE FIELD(`type`, "a", "b", "c");

这应该是应用问题逻辑的正确语法。这一切都归结为 ENUM 列表工作方式的奇怪类型转换问题——理想情况下,最好的方法是使用包含以下内容的表设置外键关系:

TypesTbl
+---------------+
| AK | Value |
+---------------+
| 1 | a |
| 2 | b |
| 3 | c |
+---------------+
Stuff
+------------------+
| PK | * | type |
+------------------+
| 1 | | 1 |
| 2 | | 2 |
| 3 | | 1 |
| 4 | | 3 |
+------------------+

SELECT s.* FROM `Stuff` AS s LEFT JOIN `TypesTbl` t ON s.type = t.AK WHERE t.Value IN ('a', 'b', 'c');

这样您就可以在查询中使用左连接(或任何一种方式),而不必为了添加新的 ENUMErated 值而更新 DDL。我相信答案的第一部分支持你正在尝试做的事情。第二部分只是附加信息。

关于mysql - 枚举在mysql数据库中的使用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3146072/

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