как вставить новую запись со значением SELECT в sql - PullRequest
1 голос
/ 21 апреля 2020

Как я могу вставить значение в таблицу A, используя возвращаемое значение из таблицы B. Я знаю, что могу использовать инструкцию INSERT INTO SELECT, но для этого необходимо, чтобы типы данных в исходной и целевой таблицах совпадали, а столбцы были в порядке, но у меня есть ниже таблица, например, так:

Таблица A:

enter image description here

Таблица B:

enter image description here

Теперь я хочу подсчитать все данные из таблицы A, которые должны вернуть 8, и сохранить их в общем поле в таблице B, а также подсчитать данные, для которых user_id больше 0, которые должны вернуть 5, и сохранить их в поле total_log_in, а также подсчитать данные, которые user_id i null, которые должны вернуть 3, и сохранить их в total_un_log. Я использовал приведенный ниже код, но получил ошибку, пожалуйста, любую помощь о том, как это сделать, спасибо

 INSERT INTO `user_tracking_daily`(`total`, `total_log_in`, `total_un_log`, `date`) VALUES (SELECT COUNT(*) from `session`,
SELECT COUNT(*) from `session` where `user_id` > 0,SELECT COUNT(*) from `session` where `user_id` IS NULL,now());

1 Ответ

3 голосов
/ 21 апреля 2020

Я бы написал это как INSERT ... SELECT ... оператор с агрегированным запросом.

INSERT INTO `user_tracking_daily`(`total`, `total_log_in`, `total_un_log`, `date`) 
SELECT
    COUNT(*),
    SUM(user_id > 0),
    SUM(user_ID IS NULL),
    NOW()
FROM session
...