MySQL - Как составить новую таблицу, которая является соединением на первичном ключе двух существующих столов

У меня есть два существующих стола, с различными областями, за исключением Основного ID (varchar, не интервал). Я хочу составить третью таблицу, которая является по существу слиянием этих двух, таких, что для данного Первичного ключа у меня есть все области в одном столе.

Каков bext способ сделать это?

Большое спасибо

12
задан Richard H 21 January 2010 в 19:05
поделиться

3 ответа

Если вы уверены, что у вас есть одна и ровно одна строка в обеих таблицах для данного первичного ID, то это должно сработать:

SELECT
    tablea.field1, tablea.field2, tablea.field3, ... tablea.fieldn, <---- field list
    tableb.field1, tableb.field2, tableb.field3, ... tableb.fieldm  <---- field list
FROM
    tablea, tableb
WHERE
    tablea.primaryID = tableb.primaryID

Возможно, вы захотите опустить поле первичного ID таблицы tablea и tableb из списка полей, если они вам на самом деле не нужны (в этом запросе оба будут содержать одно и то же значение из-за условия tablea.primaryID = tableb.primaryID).

Синтаксис относительно аналогичен и для VIEW.

1
ответ дан 2 December 2019 в 05:03
поделиться
CREATE TABLE result AS 
  (SELECT first.*, 
          second.f1, 
          second.f2, 
          second.f3 
   FROM   first 
          INNER JOIN second 
                  ON first.id = second.id);

Чтобы получить представление, сделайте то же самое, кроме замены «таблицы» с «View». Если вы идете со столом, а не представителем, убедитесь, что добавьте основной ключ, так как это не будет добавлено по умолчанию.

29
ответ дан 2 December 2019 в 05:03
поделиться

Почему вы создаете новую таблицу? Почему бы вам не просто выполнить запрос всякий раз, когда вам нужны данные? Если вы просто присоединяетесь к двум таблицам на своем первичном клавише, то большинство вашего времени доступа к данным будет потрачено в Marshalling данные обратно в ваше приложение. Вы не собираетесь экономить много времени предварительно присоединиться к таблицам, и вы будете есть много места. Кроме того, вы стремитесь к вашему большому пальто, просто жду, когда вы впервые обновите свои исходные таблицы и забудьте запустить ваш сценарий обновления, чтобы скопировать изменения в присоединенную таблицу. Дублирующие данные зло , но иногда это необходимо. Это не звучит как один из тех времен.

-1
ответ дан 2 December 2019 в 05:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: