2010-02-16 6 views
1

J'ai une table comme ci-dessous:la ligne de colonne Mysql commence par la valeur d'une autre rangée

MyTable 
-------- 
    A 
    B 
    C 

A, B, C sont des colonnes et MyTable est le nom de la table et je veux exécuter une requête MySQL comme:

SELECT MT1.A, MT2.A, MT2.B FROM MyTable MT1, MyTable MT2 
     WHERE MT1.B<>MT2.B and MT2.B like "MT1.B%" and MT2.status=0; 

Comme vous le voyez dans la requête ci-dessus j'ai une table et je veux trouver les colonnes qui commencent par une autre valeur de lignes et correspondent aux conditions. Mais la requête ci-dessus échoue évidemment parce que mysql prend "MT1.B%" comme une chaîne, comment puis-je y parvenir avec Mysql?

Répondre

1

Vous devriez pouvoir effectuer les opérations suivantes:

SELECT 
    MT1.A, MT2.A, MT2.B 
FROM 
    MyTable MT1, MyTable MT2 
WHERE 
    MT1.B <> MT2.B AND 
    MT2.B LIKE CONCAT(MT1.B, '%') AND 
    MT2.status = 0 
0
SELECT MT1.A, MT2.A, MT2.B 
FROM MyTable MT1, MyTable MT2 
WHERE MT1.B<>MT2.B 
     AND MT2.B LIKE CONCAT(MT1.B, '%') 
     AND MT2.status=0