2

2 つのテーブルからデータを選択し、別のテーブルに挿入しようとしています。各テーブルで特定のものが一致した場合にデータを選択したい。問題は、比較の 1 つが似ている必要があり、途方に暮れていることです。SQL ステートメントは以下のとおりです。少なくとも、私がやろうとしていることを示していると思います。

insert into hr_numbers 
  (`user_id`, `hr_number`) 
  select distinct u.user_id, t.num 
    from temp t, users u 
   where t.name like '%' + u.l_name + '%';

私は手順を使用しようとしましたが、それを理解することも、それが役立つかどうかさえわかりません.

4

2 に答える 2

5

まず、挿入を試みる前に、SELECT が必要なものを返すことを確認してください。これ:

SELECT DISTINCT 
       u.user_id, 
       t.num 
  FROM temp t, users u 
 WHERE t.name like '%' + u.l_name + '%'

...ANSI-89 JOIN 構文を使用しています。ANSI-92 結合構文の方が適しています。

SELECT DISTINCT
       u.user_id,
       t.num
  FROM USERS u
  JOIN TEMP t ON t.name LIKE CONCAT('%', u.l_name ,'%')

...しかし、結合基準に欠陥があるようです。姓がt.name値に表示されている場合は行をリンクし、スミスの問題につながります。姓が「スミス」の場合、名前がジョン、ジムなどであっても、すべての行がリンクされます。

于 2010-03-05T15:52:27.987 に答える
0

これを試して:

INSERT INTO hr_numbers(`user_id`, `hr_number`)
SELECT DISTINCT U.user_id, T.num
FROM temp T
INNER JOIN users U ON T.NAME LIKE '%' + U.l_name + '%'
于 2010-03-05T15:50:37.777 に答える