MySql Поиск в двух таблицах и сравнение столбцов с лайками и% - PullRequest
2 голосов
/ 05 марта 2010

Я пытаюсь выбрать данные из двух таблиц и вставить их в другую. Я хочу выбрать данные, когда определенные вещи совпадают в каждой таблице. Проблема в том, что одно из сравнений должно быть похожим, и я в растерянности. Выражение 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 + '%';

Я пытался использовать процедуры, но не могу понять это или даже сказать, поможет ли это.

Ответы [ 2 ]

5 голосов
/ 05 марта 2010

Сначала убедитесь, что 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, что приводит к проблеме Смита: если фамилия «Смит», все строки будут связаны, даже если имена - Джон, Джим и т. Д. 1008 *

0 голосов
/ 05 марта 2010

Попробуйте это:

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 + '%'
...