PostgreSQL: অন্য টেবিল থেকে সন্নিবেশ করুন


101

আমি অন্য টেবিল থেকে কোনও টেবিলে ডেটা toোকানোর চেষ্টা করছি এবং টেবিলগুলিতে সাধারণভাবে একটি কলাম রয়েছে। সমস্যাটি হ'ল, TABLE1 এর কলাম রয়েছে যা নাল মান গ্রহণ করবে না তাই আমি এগুলিকে খালি রাখতে পারি না এবং আমি এগুলি ট্যাবলেট 2 থেকে পেতে পারি না।

আমার ট্যাবলেট 1: আইডি, কল_1 (নাল নয়), কল_2 (নাল নয়), কল_3 (নাল নয়)

এবং ট্যাবলেট 2: আইডি, কল_এ, কল_ বি, কল_সি

সুতরাং আমি কীভাবে ট্যাবলেট 2 থেকে ট্যাবলেট 1 এ আইডি sertোকাতে এবং "ডেটা 1", ​​"ডেটা 2", "ডেটা 3" এর মতো হার্ড কোডিং স্ট্রিং দিয়ে কল_13 পূরণ করতে পারি?

INSERT INTO TABLE1 (id) SELECT id FROM TABLE2 WHERE col_a = "something";

ফলাফল হবে:

ত্রুটি: "কলাম" কলামের নাল মানটি নাল-সীমাবদ্ধতা লঙ্ঘন করে

উত্তর:


202

কেবল নির্বাচনের ক্ষেত্রে আক্ষরিক মান সরবরাহ করুন:

INSERT INTO TABLE1 (id, col_1, col_2, col_3)
SELECT id, 'data1', 'data2', 'data3'
FROM TABLE2
WHERE col_a = 'something';

একটি নির্বাচিত তালিকায় কোনও মান অভিব্যক্তি থাকতে পারে :

তবে বাছাই তালিকার এক্সপ্রেশনগুলিকে এফআরওএম ক্লজের টেবিলের মত প্রকাশের কোনও কলামের উল্লেখ করতে হবে না; উদাহরণস্বরূপ এগুলি অবিরাম গাণিতিক ভাব হতে পারে।

এবং একটি স্ট্রিং আক্ষরিক অবশ্যই একটি মূল্য প্রকাশ।



2

খুব দেরিতে উত্তর, তবে আমি মনে করি যে সুনির্দিষ্ট ব্যবহারের ক্ষেত্রে ব্যবহারকারীরা কেবল সারণি এ থেকে টেবিল বি তে ডেটা (োকাতে (অনুলিপি করতে চান) আরও সোজা এগিয়ে আছেন:

INSERT INTO table_b (col1, col2, col3, col4, col5, col6)
SELECT col1, 'str_val', int_val, col4, col5, col6
FROM table_a

0

রেফারেন্সিয়াল ইন্টিটিটির জন্য:

insert into  main_tbl (col1, ref1, ref2, createdby)
values ('col1_val',
        (select ref1 from ref1_tbl where lookup_val = 'lookup1'),
        (select ref2 from ref2_tbl where lookup_val = 'lookup2'),
        'init-load'
       );
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.