У меня есть таблица с сопоставленными переменными / столбцами, например:
+------+------+------+------+
| ele | dim1 | dim2 | dim3 |
+------+------+------+------+
| 123 | * | * | * |
| 123 | DM1 | * | * |
| abc | * | DM2 | * |
+------+------+------+------+
CREATE TABLE `test`
(
`ele` varchar(36) NOT NULL,
`dim1` varchar(36) NOT NULL,
`dim2` varchar(36) NOT NULL,
`dim3` varchar(36) NOT NULL,
UNIQUE KEY `test_dim1_dim2_dim3_uindex` (`ele`, `dim1`,`dim2`,`dim3`)
);
Я хочу найти первое совпадение с любым столбцом, который вместо этого может вернуть требуемое совпадение из столбца или подстановочного знака.
SELECT *
FROM test
WHERE ele = '123' (dim1 = 'DM1' OR dim1 = '*')
AND (dim2 = 'DM2' OR dim2 = '*')
AND (dim3 = 'DM3' OR dim3 = '*');
Бывает, что при этом возвращаются оба столбца (найдены один и соответствующий шаблон, конечно).
Есть ли какой-нибудь способ найти соответствующий или групповой символ при сбое?