اذهب إلى المحتوى

السؤال

نشر

على قاعدة بيانات من نوع Mysql تحتوي على أكثر من 14 مليون قيمة، أريد إدخال بعض القيم الجديدة، لكن ما أريده قبل ذلك هو التأكد من عدم وجود قيم مشابهة للجديدة، مما جعلني أفكر في استعمال not exisits لتفادي التكرار، فكيف أتمكن من استعمالها؟

Recommended Posts

  • 0
نشر

استعمل : INSERT IGNORE INTO table والتي مهمتها إدخال القيم في الجدول بعد التأكد من عدم وجودها سلفاً، وفي حالة وجود قيم سابقة تُلغى عملية إدخال القيم الحالية ليتم الانتقال إلى القيم التالية.

مثال:

  • إنشاء الجدول:
CREATE TABLE `transcripts` (
 `ensembl_transcript_id` varchar(20) NOT NULL,
 `transcript_chrom_start` int(10) unsigned NOT NULL,
 `transcript_chrom_end` int(10) unsigned NOT NULL,
 PRIMARY KEY  (`ensembl_transcript_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  • استعمال Insert Ignore Into Table:
INSERT IGNORE INTO `transcripts`
SET `ensembl_transcript_id` = 'ENSORGT00000000001',
`transcript_chrom_start` = 12345,
`transcript_chrom_end` = 12678;
  • أيضا يمكن استعمال INSERT … ON DUPLICATE KEY UPDATE والتي من شأنها تغيير القيم في حالة تواجد قيمة شبيهة بها، وهذا مثال تطبيقي:
INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;

UPDATE table SET c=c+1 WHERE a=1;

في حال كانت قيم الحقول a,b,c هي 1,2,3 موجودة مسبقا في الجدول، سيتم تغييرها بإضافة 1 إلى قيمة الحقل c، وهذا ما تعنيه :

 ON DUPLICATE KEY UPDATE c=c+1;

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...