У меня есть две таблицы A и B. Оба имеют одинаковые имена столбцов. Я хочу объединить эти две таблицы и загрузить их в таблицу C. Таблица C также имеет те же имена столбцов, что и A и B, и еще один столбец в timestamp (это для захвата времени объединения). Я не хочу дубликатов в таблице C. Я пробовал объединение, но получал повторяющиеся значения, потому что один из столбцов в таблице C в типе данных Timestamp.Объединение двух таблиц с функцией unix_timestamp() в обоих
Для примера, ниже мой пример запроса
insert overwrite table TableC
select field1,field2, unix_timestamp() as field3 from table_A
UNION
select field1,field2, unix_timestamp() as field3 from table_B
Функция два UNIX_TIMESTAMP() возвращает различные временные метки (только милли второй разницы), и я получаю дубликаты данных из-за временной метки.
Есть ли другой способ получить одну и ту же метку времени для обеих функций при объединении?
Вы можете вставить NULL в поле временной метки, а затем выполнить: обновление TableC установить field3 = UNIX_TIMESTAMP(), где field3 является нуль –
@GiacomoDegliEsposti Спасибо за ваше предложение. Я сам нашел обходное решение. Я пробовал, как показано ниже, и это сработало. 'вставить таблицу перезаписи TableC выберите T1.field1, T1.field2, UNIX_TIMESTAMP(), как field3 из (выберите поле1, поле2 из TABLE_A UNION выберите field1, Field2 из TABLE_B) КАК T1' –