Salut, j'ai 2 tables dans ma sqltable dans laquelle ma première table a des identifiants comme 111,112,113 etc. et la deuxième table a la même colonne a également un identifiant de colonne qui contient des valeurs comme 111 | aa, 112 | ab, 114 | ad et je dois tout sélectionner les identifiants de la deuxième table qui contiennent une partie de l'identifiant de la première colonne comme la deuxième table contient 111 et 112 qui sont également présents dans la table1 comme 111 et 112 comment puis-je sélectionner ces recods itried ci-dessous la requête mais didbt obtenir le résultat.

    select t1.id,t2.id from table1 t1 left outer join table2 t2 where t2.id like t2.id +'%'
    also tried.
    select t1.id,t2.id from table1 t1 left outer join table2 t2 on t2.id like t2.id +'%'

Quelqu'un peut-il s'il vous plaît me donner un indice comment dois-je faire cela.

sql
1
Up Ap 29 avril 2020 à 17:48

2 réponses

Meilleure réponse

Vous devez utiliser CONCAT pour ajouter le caractère %:

SELECT t1.id,t2.id 
FROM table1 t1 LEFT JOIN table2 t2 ON t2.id LIKE CONCAT(t1.id, '|%')

démo sur dbfiddle.uk

Remarque: assurez-vous également que vous utilisez les bonnes colonnes dans la clause ON. Dans la démonstration et la requête ci-dessus, t1.id est la colonne numérique (contient 111, 112 ou 113) et t2.id est la colonne de chaînes (contient {{X6 }}, 112|ab ou 114|ad).

Pour éviter un comportement inattendu sur des nombres supérieurs à 999, vous pouvez également ajouter le caractère de barre verticale | à la condition.

3
Sebastian Brosch 29 avril 2020 à 14:59

Vous pouvez essayer d'utiliser une clause ON appropriée

select t1.id,t2.id 
from table1 t1 
left outer join table2 t2 ON  t1.id like concat(t2.id, '%')

Ou

select t1.id,t2.id 
from table1 t1 
left outer join table2 t2 ON  t2.id like concat(t1.id, '%')

Pour la jointure, vous devez utiliser la colonne de deux tables pas de la même table

3
scaisEdge 29 avril 2020 à 14:51