মাইএসকিউএল: এসকিউএল কোয়েরিতে প্রতিটি ফলাফলের জন্য একটি রেকর্ড কীভাবে সন্নিবেশ করা যায়?


84

বলুন আমি একটি নির্বাচন আছে

SELECT DISTINCT id, customer_id, domain FROM config WHERE type = 'foo';

যা কিছু রেকর্ড দেয়।

রেজাল্ট সেটে লাইনে পৌঁছানোর জন্য আমি কীভাবে একটি সন্নিবেশ করতে পারি

INSERT INTO config (id, customer_id, domain) VALUES (@id, @customer_id, 'www.example.com');

ফলাফলের সারিটির ক্ষেত্রগুলি কোথায় @idএবং @customer_id?

সম্পাদনা: আমি কেবল এটির সদৃশ করতে চাইনি, তবে domainপরিবর্তে ক্ষেত্রটিতে একটি নতুন মান .োকাতে চাই। তবুও একটি ফেসপাম-পরিস্থিতি এটি সহজ সরল ;-) ধন্যবাদ!


আপনি নির্বাচিত রেকর্ডগুলি নকল করতে চান?
এথারবুনি

কেন আপনি আবার একই টেবিলে একই টেবিলের রেকর্ডগুলি tingোকাচ্ছেন? এটি সদৃশ তৈরি করবে
শচীন শনভাগ 14

দুঃখিত বন্ধুরা, এই প্রশ্নটি বেশ বোকা, আমি কেবল খুব সাধারণ সমস্যার মুখের
acme

প্রত্যেককেই বার বার তাদের প্রশ্নের উত্তর দেওয়ার জন্য একটি বন্ধু দরকার। [: আপনার প্রচেষ্টার আমি পুরস্কারের জন্য nerdmeritbadges.com/products/rubberduck]
জেফ ফ্রিটজ

আমার একই সমস্যা আছে। উদাহরণস্বরূপ, টেবিলটি যেভাবে ডিজাইন করা হয়েছে, আমাকে অন্য ব্যবহারকারীর এন্ট্রিগুলি প্রতিলিপি করতে হবে তবে নতুন ব্যবহারকারীর কাছে প্রতিলিপি তৈরি করতে আমার 356 টি রেকর্ড রয়েছে।
কেসি

উত্তর:


162

এই হিসাবে সহজ:

INSERT INTO config (id, customer_id, domain) 
SELECT DISTINCT id, customer_id, domain FROM config;

আপনি যদি www.example.comডোমেন হিসাবে " " চান তবে আপনি এটি করতে পারেন:

INSERT INTO config (id, customer_id, domain) 
SELECT DISTINCT id, customer_id, 'www.example.com' FROM config;

4
তবে এটি domain'www.example.com' এ সেট করে একটি নতুন রেকর্ড সন্নিবেশ করে না , এটি কেবল সমস্ত এন্ট্রিগুলিকে নকল করে।
acme

তুমি ডান -এটা এই হিসাবে সহজ হিসাবে নেই - এটি একটি সহজ সমস্যা একটি সহজ সমাধান facepalm ধন্যবাদ ;-)
চূড়া

আমি এই জটিল হ্যাকটি সংরক্ষণাগারভুক্ত করার জন্য জটিল লেখার জন্য লিখে যাচ্ছিলাম। অনেক ধন্যবাদ! সহজ হতে পারে না।
সি

4
আপনি আমার কয়েক সপ্তাহের
মূর্খ

@ আর্টেমআনকুডোভিচ খুশি হলাম আমি সাহায্য করতে পারি :)
krtek

7
INSERT INTO config (id, customer_id, domain)
SELECT id, customer_id, 'www.example.com' FROM (
  SELECT DISTINCT id, customer_id, domain FROM config
  WHERE type = 'foo'
) x;

4
এই মত একটি subquery করার প্রয়োজন নেই। অন্যান্য উত্তরগুলি দেখুন
krtek

ক্রিটেক: কোন উত্তরটি হুবহু, আপনি প্রস্তাব দিচ্ছেন? আমি অন্যান্য 4 টি উত্তর দেখতে পাচ্ছি এবং প্রত্যেকেই কোনও না কোনওভাবে ভুল।
কেন

কোন পথে ভুল? কমপক্ষে আমার দ্বিতীয় ক্যোয়ারী এবং জেফ ফ্রিটসের একটিতে আপনার মত একই ফলাফল রয়েছে।
krtek

4
ক্রিটেক: যদি সারণীতে রেকর্ড রয়েছে (1,1, "a", "foo") এবং (1,1, "b", "foo"), তবে প্রশ্নের প্রথম প্রশ্নের উত্তর ফিরে আসে (1,1, "a) "), (1,1," খ "), সুতরাং যেমনটি জিজ্ঞাসা করা হয়েছে, রেকর্ড (1,1," উদাহরণ.com ") দু'বার sertedোকানো উচিত। আপনার উত্তরটি আক্ষরিক "উদাহরণ.com" এর সাথে পৃথক করে, সুতরাং (1,1, "উদাহরণ.com") কেবল একবার inোকানো হয়েছে।
কেন

5
INSERT INTO Config (id, customer_id, domain)
SELECT DISTINCT id, customer_id, 'www.example.com' FROM config

এই সিনট্যাক্সের জন্য মাইএসকিউএল ডকুমেন্টেশনটি এখানে রয়েছে:

http://dev.mysql.com/doc/refman/5.1/en/insert-select.html


ধন্যবাদ, তবে আমি প্রতিটি ক্ষেত্রের নকল করতে চাইনি, ক্ষেত্রের 'ডোমেন' আলাদা হওয়া উচিত। তবে তা সত্ত্বেও এটি সহজ এবং আমি এই বোকা সমস্যার সাথে আটকে ছিলাম।
acme

4

সম্পাদনা - @ ক্র্টেকের উত্তরে মন্তব্য পড়ার পরে।

আমার ধারণা আপনি সন্নিবেশের পরিবর্তে একটি আপডেট চাইছেন -

update config set domain = 'www.example.com'

এটি কোনও সদৃশ এন্ট্রি তৈরি না করেই 'www.example.com' হিসাবে ডোমেনের সাথে কনফিগার টেবিলের সমস্ত বিদ্যমান রেকর্ড আপডেট করবে।

পুরানো উত্তর -

আপনি যেমন কিছু ব্যবহার করতে পারেন -

INSERT INTO config (id, customer_id, domain)
select id, customer_id, domain FROM config

দ্রষ্টব্য: - প্রাথমিক কী হিসাবে আপনার আইডি থাকলে এটি কাজ করবে না


ধন্যবাদ, তবে আমি প্রতিটি ক্ষেত্রের নকল করতে চাইনি, ক্ষেত্রের 'ডোমেন' আলাদা হওয়া উচিত। তবে তা সত্ত্বেও এটি সহজ এবং আমি এই বোকা সমস্যার সাথে আটকে ছিলাম।
acme

@ এক্মে - আপনি যদি সন্নিবেশ ব্যবহার করেন তবে এটি অবশ্যই ফলাফলগুলি সদৃশ করবে এবং আপনি যদি আপনার আইডিটিকে প্রাথমিক কী হিসাবে চিহ্নিত করেছেন তবে এটি আপনাকে সারিও সন্নিবেশ করতে দেয় না।
শচীন শানভাগ

-6

এই এসকিউএল বিবৃতি কার্যকর করুন:

-- Do nothing.

আপনি "কনফিগারেশন" থেকে স্বতন্ত্র সারি নির্বাচন করতে চান এবং একই সারণী একই টেবিলের মধ্যে সন্নিবেশ করতে চান। তারা ইতিমধ্যে সেখানে আছে। কিছুই করার নাই.

যদি না আপনি আসলে "ডোমেন" কলামের কিছু বা সমস্ত মান আপডেট করতে চান তবে। এর জন্য একটি আপডেটের বিবৃতি প্রয়োজন যা সত্যই কিছু করেছিল।


4
আমার উত্তর স্পষ্টভাবে হাস্যকর, এবং ওপি একটি মুখের তালিকায় স্বীকার করে। আমি একটুও লজ্জা পাচ্ছি না।
মাইক শেরিল 'ক্যাট রিকল'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.