Debe dividir sus datos entre dos tablas, questions
y tags
y relacionarlos usando un questions_tags
unirse a la mesa.
CREATE TABLE questions (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
url TEXT NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE tags (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
tag VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE questions_tags (
question_id INT UNSIGNED NOT NULL REFERENCES questions,
tag_id INT UNSIGNED NOT NULL REFERENCES tags
);
No estoy seguro de cuánto count
la columna de la tabla original es para, así que la omití.
Usando las tablas anteriores, puede usar uniones para encontrar todas las preguntas con una determinada etiqueta o todas las etiquetas de una pregunta.
Editar
Para obtener el recuento de cada etiqueta, podría hacer algo como esto:
SELECT tag,
count(*) AS c
FROM tags
GROUP BY tag;
Editar
Para obtener los recuentos de todas las etiquetas de todas las preguntas, haga lo siguiente:
SELECT t.tag,
q.question_id,
count(*) AS c
FROM tags AS t,
questions_tags AS qt
questions AS q
WHERE t.id = qt.tag_id
AND qt.question_id = q.id
GROUP BY t.id, q.id;
Si solo desea el recuento de etiquetas o preguntas específicas, agregue WHERE
adicional cláusulas.
Nota :Todo el SQL anterior no ha sido probado.