схемы:
drop table if exists mytable;
create table mytable
( id int auto_increment primary key,
cola int not null,
colb varchar(20) not null,
colc int not null
);
insert mytable (cola,colb,colc) values
(9,'6kHcnevOJOSU',1),
(3,'v83f15lALyFs',1),
(9,'frog',1),
(3,'g45ujP0td6nw',1);
Вариант 1:
SELECT cola, colb, colc, CASE colb
WHEN '6kHcnevOJOSU' THEN 0
WHEN 'g45ujP0td6nw' THEN 1
WHEN 'v83f15lALyFs' THEN 2
END AS sor FROM mytable
where colb in ('6kHcnevOJOSU','g45ujP0td6nw','v83f15lALyFs');
Вариант 2:
select cola,colb,colc,sor
from
( SELECT cola, colb, colc, CASE colb
WHEN '6kHcnevOJOSU' THEN 0
WHEN 'g45ujP0td6nw' THEN 1
WHEN 'v83f15lALyFs' THEN 2
END AS sor FROM mytable
) xDerived
where sor is not null;
Результаты:
+------+--------------+------+------+
| cola | colb | colc | sor |
+------+--------------+------+------+
| 9 | 6kHcnevOJOSU | 1 | 0 |
| 3 | v83f15lALyFs | 1 | 2 |
| 3 | g45ujP0td6nw | 1 | 1 |
+------+--------------+------+------+
В Варианте 1 sor
пока недоступен в предложении where
.
В варианте 2 производная таблица xDerived
очищает использование sor
внешней оболочкой.
Да, вам нужен 'where' пункт, если вы хотите, чтобы отфильтровать результаты. Ваш текущий запрос вернет значения «null» для последнего столбца для записей, которые не совпадают. – sgeddes