Предположим, у меня есть два набора данных студентов. Я хочу сопоставить студентов в одном наборе данных с другим. Критерии соответствия: совпадают ли первые 4 буквы имени, последние 4 буквы фамилии и первые 4 буквы первого слова в старшей школе. Если все это правда, мы предполагаем, что студенты одинаковы.
Я могу выполнить sh, используя
SELECT t1.`Full Name`, t1.`uid_hist`, t2.`fullname`, t2.`hsname`, t1.`High School`
FROM table1 t1
LEFT JOIN table2 t2
on SUBSTRING(REGEXP_SUBSTR(LOWER(t2.fullname), '^[a-z]*?[^a-z]'), 1, 4) = SUBSTRING(REGEXP_SUBSTR(LOWER(t1.`Full Name`), '^[a-z]*?[^A-z]'), 1, 4)
and SUBSTRING(REGEXP_SUBSTR(LOWER(t2.fullname), '[^a-z][a-z]*?$'), -4) = SUBSTRING(REGEXP_SUBSTR(LOWER(t1.`Full Name`), '[^a-z][a-z]*?$'), -4)
and SUBSTRING(REGEXP_SUBSTR(LOWER(t2.hsname), '^[a-z]*?[^a-z]'), 1, 4) = SUBSTRING(REGEXP_SUBSTR(LOWER(t1.`High School`), '^[a-z]*?[^a-z]'), 1, 4)
Это довольно медленно, поэтому мне также любопытно, есть ли лучший способ, но он работает как задумано.
Теперь мой вопрос: как мне go вставить вставленные в таблицу идентификаторы 'uid' в качестве нового столбца в table2? То есть, если есть ученик, который был сопоставлен со студентом в таблице 1, то уникальный столбец этого ученика в таблице 1 будет в столбце «совпадение». Для студентов, которые не соответствуют, «матч» будет просто нулевым.
Если строка в таблице2 соответствует нескольким учащимся в таблице1, допустим, мы повторяем строку в таблице2, за исключением случаев, когда для слова «совпадение» используются разные значения.
Есть ли прямой способ чтобы выполнить 1015 * это? Я очень новичок в MySQL и не знаю, как поступить