MySQL Seleziona i dati da un attributo multivalore
-
11-12-2019 - |
Domanda
Come posso eseguire una query di selezione su un attributo multivalore?MySQL ha una funzione Seleziona determinati dati da un campo multivalore?Molto aiuto è apprezzato.Ecco un campione del problema:
Tabella
userid groups
-------------------
2 2,3,5
4 1
9 2,5,10
.
DataType è char(250)
per groups
Voglio fare una query per selezionare tutti i generacodicitagcodes che appartengono al Gruppo 5, in questo esempio sarebbe UserID 2 e 9. Quindi:
userid
------
2
9
.
Qualche modo per farlo con una query MySQL?o con php / mysql?
Soluzione
Nel caso in cui il tipo di dati groups
sia impostato
Puoi usare
SELECT * FROM users WHERE FIND_IN_SET('5', groups);
.
.
Aggiornamento
In caso di caratteri o varchar.Puoi usare questo
SELECT * FROM users
WHERE
groups LIKE '5,%'
OR groups LIKE '%,5'
OR groups LIKE '%,5,%'
OR groups = '5'
. Altri suggerimenti
Questo è brutto, ma se vuoi farlo completamente in MySQL, potresti fare:
SELECT *
FROM users
WHERE groups LIKE '%,5,%'
OR groups = '5'
OR groups LIKE '%,5'
OR groups LIKE '5,%'
.
Stai meglio con una tabella separata con un gruppo per riga e un riferimento all'indomestico all'utente.Potresti fare un join con una condizione molto più semplice con quello schema.
SELECT users.*
FROM users
INNER JOIN users_groups ON (users.user_id = users_groups.group_id)
WHERE users_groups.group_id = 5
.