Обновление всех столбцов таблицы из данных другой таблицы? - PullRequest
0 голосов
/ 20 февраля 2019

То, что я хочу сделать, просто, но мне не хватает знаний sql, поэтому я действительно буду признателен за любую помощь.

У меня есть таблица 'dev'.

product1 | product2 | count
---------------------

Мне также нравится таблица.

wishlist_id | user_id | product_id
-------------------------------
1           2        54
2           2        60
3           3        54
7           3        60
..          ..       ..
99          99       99

Я хочу узнать, сколько раз 2 продукта были использованы вместе, но вместо создания представления я хочу сохранить данные в таблице dev.Как я могу обновить строки, чтобы таблица dev стала такой:

         dev
-----------------------
product1 product2 count 
54       60       2
..

EDIT

Я не знаю, как на самом деле использовать оператор обновления здесь.

мой запрос:

SELECT i1.product_id as product1, i2.product_id as product2, 
        COUNT(*) as num 
FROM likes i1 
    INNER JOIN likes i2 ON i1.wishlist_id = i2.wishlist_id 
        AND i1.product_id < i2.product_id 
GROUP BY product1, product2;

1 Ответ

0 голосов
/ 20 февраля 2019

Предположим, что ваша таблица dev имеет ограничение уникального ключа для пары product1, product2:

CREATE TABLE dev (
  product1 INT NOT NULL,
  product2 INT NOT NULL,
  count INT NOT NULL DEFAULT 0,
  PRIMARY KEY (product1, product2)
);

Теперь вы можете использовать INSERT ... ON DUPLICATE KEY UPDATE, чтобы добавить или заменить строки, соответствующие парамваши продукты.У вас уже был оператор SELECT, который генерировал строки, теперь вам нужно использовать его в IODKU.

INSERT INTO dev (product1, product2, count)
 SELECT i1.product_id as product1, i2.product_id as product2, COUNT(*) as num 
 FROM likes i1 INNER JOIN likes i2 
   ON i1.wishlist_id = i2.wishlist_id AND i1.product_id < i2.product_id 
 GROUP BY product1, product2
ON DUPLICATE KEY UPDATE count = VALUES(count);

Подробнее о IODKU можно узнать здесь: https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...