Как использовать enum в базе данных MySQL - PullRequest
2 голосов
/ 30 июня 2010

Я использовал ENUM в таблице базы данных MySQL.Как я могу получить все вещи, где type = a, b, c?

Просто, если я использую VARCHAR, то я могу использовать:

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

Но с помощью ENUM это не работает.

Как я могу получить все вещи, где type = a, b, c?

Примечание: Тип используется как ENUM, а не CHAR или VARCHAR.

Ответы [ 2 ]

1 голос
/ 30 июня 2010

Вы можете использовать ПОЛЕ следующим образом:

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

Это должен быть правильный синтаксис для применения логики вашего вопроса.Все сводится к странным проблемам приведения типов к способам работы списков ENUM. В идеале лучший способ - это настроить forign key отношениях корабль с таблицей, в которой есть что-то вроде:

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');

Таким образом, вы используетеоставьте соединение (или любой другой способ) в своем запросе, и вам не нужно обновлять DDL, просто чтобы добавить новое значение ENUMerated.Первая часть ответа, я считаю, поддерживает то, что вы пытаетесь сделать.Вторая часть была просто дополнительной информацией.

0 голосов
/ 30 июня 2010

Используйте одинарные кавычки:

SELECT * FROM stuff WHERE type IN ('a', 'b', 'c');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...