MYSQL utilise 'LIKE' dans la clause 'WHERE' pour effectuer une recherche dans la sous-requête
Comment utiliseriez-vous "AIMEZ" pour effectuer une recherche dans une sous-requête?
E. g. j'ai essayé de le faire, mais ne fonctionne pas:
SELECT *
FROM mytable
WHERE name
LIKE '%
(SELECT name FROM myothertable)
%'
J'ai jusqu'à présent:
SELECT * FROM t1
WHERE t1.name IN (SELECT t2.name FROM t2)
AND (t1.title IN (SELECT t2.title FROM t2)
OR t1.surname IN (SELECT t2.surname FROM t2))
Ça fonctionne ok, de retour exacte de matchs, mais il ne semble pas retourner mes autres enregistrements qui sont semblables, donc je voudrais aussi vérifier que:
t1.titre LIKE '%t2.title%' ET t1.nom LIKE '%t2.nom de famille%'
Comment puis-je faire?
source d'informationauteur qwerty
Vous devez vous connecter pour publier un commentaire.
L'aide d'une JOINTURE:
...mais il peut y avoir des doublons, si il n'y a plus d'un match dans
myothertable
pour unmytable
enregistrement.À l'aide de EXISTE:
À l'aide de Recherche plein Texte
MATCH
(nécessitemyothertable
est MyISAM)Par exemple:
Autant que la terminologie va: ceci est connu comme une sous-requête corrélée.
Meilleur moyen serait de créer une fonction appelée NameMatch()
Dernière Question :
La fonction ressemblerait à :
SELECT * from t1
OÙ t1.nom IN (SELECT t2.nom DE t2)
ET (t1,.titre IN (SELECT t2.titre DE t2)
OU t1.nom IN (SELECT t2.nom DE t2))
Juste une autre façon:
Il a Travaillé POUR MOI
cette chaîne fonctionne très bien pour moi.
"SELECT * from table1 OÙ les acteurs de terrain comme CONCAT('%', (SELECT id from table2), '%')";