1

私は2つのテーブルを持っています。tlt2。各テーブルには列があります: IDname。これIDは、PK および自動インクリメントです。2 つのテーブルは互いに接続されていません。はのt2.nameサブセットですが、 の文字列の先頭に をt1.name追加した後です。元:www.name

`t1`.`name`= ggg
`t2`.`name`= www.ggg

私がやろうとしているのは、t1.name挿入されていない場所のすべてのレコードを選択することt2です。そこで、次のクエリを書きました。

select concat('www.',name) 
from db.t1
LEFT JOIN db.t2 
ON t2.name = t1.name
WHERE NOT EXISTS (select name from db.t2);

しかし、結果は0です。t1 では利用できるが t2 では利用できないレコードがあることは確かです。t2 にない t1 のすべての名前を選択するにはどうすればよいですか??

4

3 に答える 3

1
select concat('www.',name) 
from db.t1
LEFT JOIN db.t2 ON t2.name = concat('www.', t1.name)
WHERE db.t2.name IS NULL
于 2012-11-09T00:16:23.323 に答える
0

これは次のことを行う必要があります。

select t.name FROM
(
 select concat('www.',t1.name) AS name
 from t1
) t
LEFT JOIN t2
ON t2.name = t.name
WHERE t2.name IS NULL
于 2012-11-09T00:26:23.233 に答える
0
SELECT CONCAT('www.', tbl1.name)
FROM db.t1 AS tbl1
WHERE NOT EXISTS (
    SELECT 1
    FROM db.t2 AT tbl2
    WHERE CONCAT('www.', tbl1.`name`) = tbl2.`name`
)
于 2012-11-09T00:19:26.407 に答える