he éste Etiquetas de mesaconmutador con gusto dentro consulta SELECT en MySQL
CREATE TABLE IF NOT EXISTS `Tags` (
`id_tag` int(10) unsigned NOT NULL auto_increment,
`tag` varchar(255) default NULL,
PRIMARY KEY (`id_tag`),
UNIQUE KEY `tag` (`tag`),
KEY `id_tag` (`id_tag`),
KEY `tag_2` (`tag`),
KEY `tag_3` (`tag`),
KEY `tag_4` (`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2937 ;
INSERT INTO `Tags` (`id_tag`, `tag`) VALUES
(1816, '(class'),
(2642, 'class\r\n\r\nâ?¬35'),
(1906, 'class\r\nif'),
(1398, 'class'),
(2436, 'class)'),
(1973, 'class:\n1.'),
(2791, 'classes'),
(1325, 'New'),
(2185, 'pack'),
(1905, 'packed'),
(1389, 'WebClass');
quiero ir a buscar todos los registros en los que la etiqueta coincide con palabras clave class
o pack
o new
, junto con otro campo que indica cuál de las 3 palabras clave en realidad coincide con el campo de etiqueta.
la siguiente consulta no da resultados correctos Consulta 1
select id_tag,
case tag
when tag LIKE "%class%" then "class"
when tag LIKE "%new%" then "new"
when tag LIKE "%pack%" then "pack"
end as matching_tag
from Tags
where tag LIKE "%class%" OR tag LIKE "%new%" OR tag LIKE "%pack%"
tengo que usar similares dentro de la caja. De lo contrario, la coincidencia completa funciona. La siguiente consulta funciona: -
Consulta 2
select id_tag,
case tag
when "class" then "class"
when "new" then "new"
when "pack" then "pack"
end as matching_tag
from Tags
where tag = "class" OR tag = "new" OR tag = "pack"
Lo que está mal con la consulta 1. Por favor, ayuda.
+1 para los datos DDL y de la muestra – Unreason
Cuál es el problema aquí? La consulta 1 da 11 resultados y hay 11 entradas, que es lo que se esperaría. La cláusula where en la consulta 2 es diferente y cambia el conjunto de resultados. – Cez
Por cierto, puede usar 'WHERE tag IN (" clase "," nuevo "," paquete ")' – abatishchev