4

私は以下のようなテーブルを持っています:

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

A、B、C は列で、MyTable はテーブル名で、次のような mysql クエリを実行したい:

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;

上記のクエリからわかるように、テーブルがあり、別の行の値で始まり、条件に一致する列を見つけたいと考えています。しかし、上記のクエリは明らかに失敗します。これは、mysql が "MT1.B%" を文字列として受け取るためです。Mysql でこれを達成するにはどうすればよいですか?

4

2 に答える 2

5

次のことができるはずです。

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
于 2010-02-16T12:44:58.783 に答える
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
于 2010-02-16T12:45:22.760 に答える