#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. Не работает. Первый запрос вернул чуть более миллиона строк с совпадающими именами, которые не совпадают. Второй запрос не сработал из-за синтаксической ошибки.