Внутреннее соединение MySQL не возвращает результаты

#mysql #join

#mysql #Присоединиться

Вопрос:

Я пытаюсь выполнить внутреннее объединение двух таблиц, чтобы добавить столбец в одну из таблиц.

Вот как выглядят таблицы

Таблица 1

 Name               year  
Dickerson, Molan   2015
  

Таблица 2

 Person_ID Last_Name   First_Name
23        Dickerson   Molan
  

Но, когда я внутреннее соединение через:

 SELECT * 
FROM table1 
INNER JOIN table2
ON table1.name like CONCAT('%', table2.Last_Name, '%') 
AND table1.name like CONCAT('%', table2.First_Name, '%')
  

Я получаю пустые результаты. Почему? Цель состоит в том, чтобы добавить ID column в таблицу1

Комментарии:

1. @GordonLinoff нет, извините. Я отредактирую. Просто пытался показать, что это строки, но это должно быть неотъемлемо…

2. Вы уверены, что получаете пустые результаты именно с теми данными, которые вы показали здесь? Я не могу: sqlfiddle.com /#!9/d131a/1

3. @shree.pat18 Ну, в реальных таблицах больше целых значений, но некоторые имена, подобные приведенному выше, отсутствуют в результатах, в то время как другие есть…

4. проверьте набор символов столбца и сопоставление обоих столбцов, используемых в предложении where dev.mysql.com/doc/refman/5.5/en/charset-column.html

5. @Omesh У них одинаковая сортировка.

Ответ №1:

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

     SELECT * 
    FROM table1 t1
    INNER JOIN table2 t2
    ON (t1.name like CONCAT('%', trim(t2.Last_Name), '%') 
    AND t1.name like CONCAT('%', trim(t2.First_Name), '%') )
  

Комментарии:

1. возможно, ваши данные неверны, покажите результат запроса? или попробуйте еще раз с включенной отделкой (t1.name например, CONCAT(‘%’, trim(t2.Last_Name), ‘%’)

Ответ №2:

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

 SELECT * 
FROM table1 
INNER JOIN table2
ON table1.name like CONCAT('%', table2.Last_Name) 
AND table1.name like CONCAT(table2.First_Name, '%')
  

Комментарии:

1. Не работает. Первый запрос вернул чуть более миллиона строк с совпадающими именами, которые не совпадают. Второй запрос не сработал из-за синтаксической ошибки.