Вы можете использовать ПОЛЕ следующим образом:
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.Первая часть ответа, я считаю, поддерживает то, что вы пытаетесь сделать.Вторая часть была просто дополнительной информацией.