postgresql: оператор INSERT INTO с запросом выбора - PullRequest
0 голосов
/ 31 октября 2018

Мне нужно вставить некоторые данные в мой table существующий столбец client_id, поэтому я использую select with insert

INSERT into 'my_table' (column1, client_id, column3) VALUES (val1,select distinct client_id from 'my_table', val3)

Мне нужен client_id из той же таблицы my_table, и мне нужны client_ids в операторе вставки.

SELECT DISTINCT client_id FROM my_table дает мне 113 client_id, поэтому я хочу вставить несколько строк для каждого 113 клиента, используя вышеуказанный подход.

Я сделал этот запрос

INSERT INTO client_notification_preferences (client_id, object_type , frequency,created_at,updated_at) SELECT DISTINCT client_id, 'ClientShipment',1, CURRENT_TIMESTAMP , CURRENT_TIMESTAMP FROM client_notification_preferences;

но это дает мне эту ошибку enter image description here

 create_table "client_notification_preferences", id: :uuid, default: "uuid_generate_v4()", force: :cascade do |t|
t.uuid     "client_id"
t.string   "object_type"
t.integer  "frequency"
t.datetime "created_at",  null: false
t.datetime "updated_at",  null: false

конец

1 Ответ

0 голосов
/ 31 октября 2018

, если val1 и val3 являются переменными, а client_id - это поле из my_table, которое вы можете использовать из кода ниже.

 INSERT into 'my_table' (column1, client_id, column3) select distinct val1, 
    client_id,val3 from 'my_table'

например

INSERT into 'my_table' (column1, client_id, column3) select distinct 1, client_id,2 from 'my_table'
...