web-dev-qa-db-fra.com

Requête de jointure MySQL en utilisant comme?

J'essaie de faire fonctionner cela depuis un certain temps maintenant, mais cela ne semble tout simplement pas fonctionner, ce n'est peut-être même pas possible, ce que je veux faire, c'est effectuer une requête de jointure MySQL en utilisant comme, comme celui-ci par exemple j'ai trouvé ...

SELECT *
FROM Table1
INNER JOIN Table2 ON Table1.col LIKE '%' + Table2.col + '%'

mais cela ne semble pas fonctionner du tout, toute aide qui pourrait être apportée serait brillante, merci!

40
David

Essayer

SELECT *
FROM Table1
INNER JOIN Table2 ON Table1.col LIKE CONCAT('%', Table2.col, '%')

MySQL effectue la concaténation des chaînes différemment des autres bases de données, donc si vous souhaitez porter votre application, vous devez avoir une version alternative où || est utilisé comme opérateur de concaténation, comme l'a mentionné Michael dans une autre réponse. Cependant, cet opérateur ne fonctionne pas dans MySQL, car il signifie or.

82
Tor Valamo

Et à la place:

SELECT * FROM Table1, Table2 WHERE Table1.col LIKE '%'+Table2.col+'%';

Comme vous sélectionnez tout dans les deux tables de toute façon, cela vous y mènera probablement.

1
inkedmn
SELECT p.products_id, pd.products_name, p.products_model
FROM products_description pd
JOIN products p ON p.products_id = pd.products_id
WHERE pd.products_name LIKE CONCAT( '%', p.products_model, '%' )
LIMIT 0 , 100

Tout d'abord, vous devez restreindre votre demande par (p.products_id = pd.products_id) et LIMIT. Et regardez combien de temps cela a pris. Après cela, vous pouvez aller faire une comparaison avec (OERE). Si vous voulez comparer directement au sein de JOIN, vous déposerez votre base de données s'il y a dans la liste 20 milliers d'articles. Il faut se méfier.)