মাইএসকিউএল: সারণীতে উপস্থিত না থাকলে রেকর্ড Inোকান


384

আমি নিম্নলিখিত কোয়েরিটি কার্যকর করার চেষ্টা করছি:

INSERT INTO table_listnames (name, address, tele)
VALUES ('Rupert', 'Somewhere', '022')
WHERE NOT EXISTS (
    SELECT name FROM table_listnames WHERE name='value'
);

তবে এটি একটি ত্রুটি প্রদান করে। মূলত আমি রেকর্ডের 'নাম' ক্ষেত্রটি অন্য রেকর্ডটিতে ইতিমধ্যে উপস্থিত থাকলে কোনও রেকর্ড সন্নিবেশ করতে চাই না - নতুন নামটি অনন্য কিনা তা কীভাবে পরীক্ষা করবেন?



12
এটির বা বর্তমানের সমস্ত উত্তরই ধরে নেয় যে আপনি একটি অনন্য সূচক যুক্ত করতে পারেন। কখনও কখনও সিদ্ধান্তটি ব্যবসায়ের যুক্তির ভিত্তিতে হয় যা পুরো টেবিলে চাপানো যায় না। উদাহরণস্বরূপ, আপনি একটি কলামে একটি নির্দিষ্ট মান সহ একাধিক সারি মঞ্জুরি দিয়েছেন, কিন্তু কলামের অন্য মানটি কেবল একটি সারিতে প্রদর্শিত হবে appear আমরা কীভাবে তা সম্পাদন করব?
অস্কার

উত্তর:


502

আমি আসলে প্রস্তাব দিচ্ছি না যে আপনি এটি করছেন, UNIQUEপিসকভোর এবং অন্যদের পরামর্শ অনুসারে সূচীকরণ এটি করা আরও ভাল উপায়, তবে আপনি যা চেষ্টা করেছিলেন তা আসলে আপনি করতে পারেন:

CREATE TABLE `table_listnames` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL,
  `address` varchar(255) NOT NULL,
  `tele` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB;

একটি রেকর্ড sertোকান:

INSERT INTO table_listnames (name, address, tele)
SELECT * FROM (SELECT 'Rupert', 'Somewhere', '022') AS tmp
WHERE NOT EXISTS (
    SELECT name FROM table_listnames WHERE name = 'Rupert'
) LIMIT 1;

Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

SELECT * FROM `table_listnames`;

+----+--------+-----------+------+
| id | name   | address   | tele |
+----+--------+-----------+------+
|  1 | Rupert | Somewhere | 022  |
+----+--------+-----------+------+

আবার একই রেকর্ডটি toোকানোর চেষ্টা করুন:

INSERT INTO table_listnames (name, address, tele)
SELECT * FROM (SELECT 'Rupert', 'Somewhere', '022') AS tmp
WHERE NOT EXISTS (
    SELECT name FROM table_listnames WHERE name = 'Rupert'
) LIMIT 1;

Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

+----+--------+-----------+------+
| id | name   | address   | tele |
+----+--------+-----------+------+
|  1 | Rupert | Somewhere | 022  |
+----+--------+-----------+------+

একটি ভিন্ন রেকর্ড Inোকান:

INSERT INTO table_listnames (name, address, tele)
SELECT * FROM (SELECT 'John', 'Doe', '022') AS tmp
WHERE NOT EXISTS (
    SELECT name FROM table_listnames WHERE name = 'John'
) LIMIT 1;

Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

SELECT * FROM `table_listnames`;

+----+--------+-----------+------+
| id | name   | address   | tele |
+----+--------+-----------+------+
|  1 | Rupert | Somewhere | 022  |
|  2 | John   | Doe       | 022  |
+----+--------+-----------+------+

এবং আরও ...


হালনাগাদ:

#1060 - Duplicate column nameদুটি মান সমান হতে পারে ক্ষেত্রে ত্রুটি রোধ করতে, আপনাকে অবশ্যই অভ্যন্তরের SELECT এর কলামগুলির নাম লিখতে হবে:

INSERT INTO table_listnames (name, address, tele)
SELECT * FROM (SELECT 'Unknown' AS name, 'Unknown' AS address, '022' AS tele) AS tmp
WHERE NOT EXISTS (
    SELECT name FROM table_listnames WHERE name = 'Rupert'
) LIMIT 1;

Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

SELECT * FROM `table_listnames`;

+----+---------+-----------+------+
| id | name    | address   | tele |
+----+---------+-----------+------+
|  1 | Rupert  | Somewhere | 022  |
|  2 | John    | Doe       | 022  |
|  3 | Unknown | Unknown   | 022  |
+----+---------+-----------+------+

18
ধন্যবাদ যে সাহায্য করেছে। আমার আসল সমস্যাটি আরও জটিল এবং কলামটি কেবল অনন্য হতে পারে না এবং আমি প্রাথমিক কীতে নির্ভর করতে পারি না। তবে আমি ঠিক এটিই খুঁজছিলাম।
রূপ্ট

2
@ পিসকোভার: একমত @ রুপার্ট: যদি সম্ভব হয় তবে আপনার অভ্যন্তরীণ নির্বাচনের বিবৃতিতে ( name, এই ক্ষেত্রে) উল্লেখ করা কলামটি সূচী করা উচিত । আপনি যেটি করতে পারেন তা SELECT 'John', 'Doe', '022' FROM table_listnamesপরিবর্তে এটিও নোট করুন SELECT * FROM (SELECT 'John', 'Doe', '022') AS tmp- তবে এটি কেবল তখনই কাজ করবে যদি table_listnamesইতিমধ্যে এক বা একাধিক সারি থাকে। আমি সন্দেহ করি গতি যদিও অন্যরকম, তাই এটি সম্ভবত উদ্বেগের বিষয় নয়।
মাইক

3
@ বিজয়রামামূর্তি: এটি কাজ করে কারণ আপনি একটি নির্বাচনী বিবৃতি ফলাফল .োকান। ক্যোয়ারি মনোযোগ সহকারে পড়ুন -> WHEREবিবৃতিটি SELECTক্যোয়ারির অন্তর্ভুক্ত। সিলেক্ট ক্যোয়ারীটি হয় একটি একক ডেটা-সারি (ডেটা
ফিলিপ

13
আপনি একই ক্ষেত্রের মধ্যে দুটি ক্ষেত্রে বিভিন্ন ক্ষেত্রে (যেমন SELECT 'Humbert', 'Humbert', '1'অভ্যন্তরীণ নির্বাচনের ক্ষেত্রে) সন্নিবেশ করতে চাইলে এটি কাজ করবে বলে মনে হচ্ছে না । আমি একটিERROR 1060 (42S21): Duplicate column name
সিগার্নার

28
@ cburgmer আমিও একই সমস্যা পেয়েছি #1060 - Duplicate column name। আপনি কি সমাধান খুঁজে পেয়েছেন? সম্পাদনা: এটি খুঁজে পেয়েছি। প্রতিটি মান পিছনে একটি AS যুক্ত করুন:SELECT * FROM (SELECT 'Rupert' as name, 'Rupert' as friend, '022' as number) AS tmp
কাই Noack

292

INSERT WHEREসিনট্যাক্সে অনুমতি দেয় না

আপনি যা করতে পারেন: UNIQUE INDEXমাঠে একটি তৈরি করুন যা অনন্য হওয়া উচিত ( name), তারপরে যেকোনটি ব্যবহার করুন:

  • স্বাভাবিক INSERT(এবং নামটি ইতিমধ্যে উপস্থিত থাকলে ত্রুটিটি পরিচালনা করুন)
  • INSERT IGNORE( নামটি ইতিমধ্যে উপস্থিত থাকলে যা নিঃশব্দে একটি সতর্কতার (ত্রুটির পরিবর্তে) ব্যর্থ হবে )
  • INSERT ... ON DUPLICATE KEY UPDATE (যা কার্যকর করবে UPDATE ইতিমধ্যে নামটি ইতিমধ্যে উপস্থিত থাকলে কার্য সম্পাদন করবে, ডকুমেন্টেশন দেখুন )

1
আপনার যদি সতর্কতা বার্তা পেতে হয় তবে পরে আপনি এটি করতে পারেনmysql> show warnings\G
20:58

2
আইএম, সতর্কতা বার্তা, এর ক্ষেত্রেINSERT IGNORE^Duplicate entry '.+' for key '.+'$
ব্যবহারকারী 2426679

1
আপনি যদি সন্নিবেশ সন্নিবেশ ব্যবহার করেন তবে এটি অন্যান্য ত্রুটিগুলিও উপেক্ষা করবে যা ডুপ্লিকেটগুলির কারণে নয়?
gepex

1
@gepex হ্যাঁ, এটি হবে। INSERT IGNOREআইএমও ব্যবহার করে এটি একটি বড় সমস্যা ।
shmosel

1
দ্রষ্টব্য: অনন্য কী সীমাবদ্ধতার মধ্যে থাকা কলামগুলির মধ্যে যে কোনও একটি বর্ধনযোগ্য হলে এই উত্তরটি সেরা পছন্দ নাও হতে পারে! প্রতিবন্ধকতা কাজ করে, তবে আপনি অন্যান্য ফলাফলের আশা করতে পারেন :) সন্নিবেশ করা ("জন দো", এনইউএল), ("জন দো", এনইউএল) দুটি সারিতে ফলস্বরূপ উভয় ক্ষেত্র একসাথে অনন্য মূল সীমাবদ্ধ। আরো দেখুন stackoverflow.com/questions/4081783/unique-key-with-nulls
Piemol

57

কাজ করছে :

INSERT INTO users (full_name, login, password) 
  SELECT 'Mahbub Tito','tito',SHA1('12345') FROM DUAL
WHERE NOT EXISTS 
  (SELECT login FROM users WHERE login='tito');

এটি কেবল ওরাকল ডাটাবেসের জন্যই কাজ করে? en.wikipedia.org/wiki/DUAL_table এই প্রশ্নের মাইএসকিউএল সম্পর্কে বিশেষভাবে হয়!
উচ্চ অনিয়মিত

1
আমি ওরাকল ডাটাবেসে পরীক্ষা করি না। এটি মাইএসকিউএল এ ভাল কাজ করছে এবং পরীক্ষা করেছে।
মাহবুব টিটো

9
আমি যেহেতু শিখেছি "দ্বৈত" মাইএসকিউএল এ উপলব্ধ তবে মাইএসকিউএল এর ওপেন সোর্স শাখা মারিয়াডিবি-তে নেই
হাইলি অনিয়মিত

3
@ হাইলিআইরিগ্রুলারের উইকিপিডিয়া লিঙ্ক থেকে "বেশ কয়েকটি অন্যান্য ডাটাবেস (মাইক্রোসফ্ট এসকিউএল সার্ভার, মাইএসকিউএল, পোস্টগ্রাইএসকিউএল, এসকিউলাইট এবং টেরাদাতা সহ) কোনও টেবিলের প্রয়োজন না হলে একজনকে পুরোপুরি FROM ধারা বাদ দিতে সক্ষম করে This এটি কোনও ডামি টেবিলের প্রয়োজনীয়তা এড়ায়" " একই কোয়েরিটি FROM DUAL ব্যতীত MySQL- এ (5.7, যদি তা বিবেচিত হয়) কাজ করে বলে মনে হচ্ছে।
স্ট্যানিয়াস

1
মারিয়াডিবিতে পরীক্ষিত এবং সূক্ষ্মভাবে কাজ করছে! আপনাকে @ মাহবুবটিটো ধন্যবাদ
জেফ

27

মাইএসকিউএল একটি খুব সুন্দর সমাধান সরবরাহ করে:

REPLACE INTO `table` VALUES (5, 'John', 'Doe', SHA1('password'));

আপনি অনন্য প্রাথমিক কী (যেটি এখানে 5 এর মান সহ) ঘোষণা করেছেন সেহেতু ব্যবহার করা খুব সহজ।


এটি রোধ করতে আপনার এখানে একটি অনন্য সূচক তৈরি করতে হবে, আরও তথ্য এখানে: লিঙ্ক
আজমির

খুব বিপজ্জনক আপনি কী করছেন তা না জানলে চেষ্টা করবেন না। আসলে, চেষ্টা করবেন না। অন্যান্য উত্তর চেক করুন।
ঝুরলাদ এস্ট্রেলা

3
দ্রষ্টব্য, এটি কোনও মিলে যাওয়া সারিগুলি মুছে ফেলে এবং তারপরে সেগুলি পুনরায় সন্নিবেশ করায়, এই একই আচরণের একটি নিরাপদ সংস্করণ হ'ল ডুপ্লিকটি কী আপডেট করা ব্যবহার করা, যা মুছে ফেলা এবং পুনরায় সন্নিবেশ করার পরিবর্তে গণিত সারিগুলি আপডেট করে: dev.mysql.com/doc/ রেফম্যান / 5.7 / এন / রিপ্লেস html
ওমন

22
INSERT IGNORE INTO `mytable`
SET `field0` = '2',
`field1` = 12345,
`field2` = 12678;

এখানে মাইএসকিএল ক্যোয়ারী, এটি উপস্থিত না থাকলে রেকর্ড সন্নিবেশ করায় এবং বিদ্যমান অনুরূপ রেকর্ড উপেক্ষা করবে।

----Untested----

4
এটি আমার পক্ষে কাজ করে না, INSERT IGNORE INTO emA AssignTagsforEvent SET ইভেন্টId = '2', ডিফল্টট্যাগআইডি = '1';
পিটু

8
সাইনটেক্সগুলি sertোকান এবং আপডেটের মিশ্রণের মতো দেখায়। মানে INSERT IGNORE INTO `mytable` (`field0`, `field1`, `field2`) values ('2', 12345, 12678);?
হোবো

@ মাইএসকিউএল ম্যানুয়াল থেকে হাবো dev.mysql.com/doc/refman/5.7/en/insert.html ইনসার্ট বাক্য গঠন: এটি INSERT [...] IGNORE INTO mytable VALUES ...বাINSERT [...] IGNORE INTO mytable SET col_name={expr | DEFAULT},...
শিরকম

"আপনি যদি আইজিএনওর মডিফায়ার ব্যবহার করেন তবে ইনসার্ট স্টেটমেন্টটি কার্যকর করার সময় যে ত্রুটিগুলি ঘটে তা উপেক্ষা করা হবে"। সুতরাং মূলত আপনি কিছুই সমাধান করেন নি।
মার্সেলো আগিমিভেল

18

আপনি নিম্নলিখিত পদ্ধতিটি সহজেই ব্যবহার করতে পারেন:

INSERT INTO ... ON DUPLICATE KEY UPDATE ...

এইভাবে আপনি যে কোনও নতুন কাঁচা সন্নিবেশ করতে পারেন এবং যদি আপনার সদৃশ ডেটা থাকে তবে নির্দিষ্ট কলামটি প্রতিস্থাপন করুন (সেরা কলামগুলি টাইমস্ট্যাম্পগুলি হয়)।
উদাহরণ স্বরূপ :

CREATE TABLE IF NOT EXISTS Devices (
  id         INT(6)       NOT NULL AUTO_INCREMENT,
  unique_id  VARCHAR(100) NOT NULL PRIMARY KEY,
  created_at VARCHAR(100) NOT NULL,
  UNIQUE KEY unique_id (unique_id),
  UNIQUE KEY id (id)
)
  CHARACTER SET utf8
  COLLATE utf8_unicode_ci;

INSERT INTO Devices(unique_id, time) 
VALUES('$device_id', '$current_time') 
ON DUPLICATE KEY UPDATE time = '$current_time';

13

আপনি যদি টেবিলে সত্যিই কোনও অনন্য সূচক পেতে না পারেন তবে আপনি চেষ্টা করতে পারেন ...

INSERT INTO table_listnames (name, address, tele)
    SELECT 'Rupert', 'Somewhere', '022'
        FROM some_other_table
        WHERE NOT EXISTS (SELECT name
                              FROM table_listnames
                              WHERE name='Rupert')
        LIMIT 1;

12

একটি অনুরূপ সমস্যা কাটিয়ে উঠতে, আমি একটি অনন্য কলাম রাখতে টেবিলটি সংশোধন করেছি। আপনার উদাহরণ ব্যবহার করে, সৃষ্টিতে আমার এমন কিছু হবে:

name VARCHAR(20),
UNIQUE (name)

এবং তারপরে tingোকানোর সময় নিম্নলিখিত কোয়েরিটি ব্যবহার করুন:

INSERT IGNORE INTO train
set table_listnames='Rupert'

আমি এই সমাধান পছন্দ।
ইলিয়াস করিম

9

এই ক্যোয়ারীটি ভালভাবে কাজ করে:

INSERT INTO `user` ( `username` , `password` )
    SELECT * FROM (SELECT 'ersks', md5( 'Nepal' )) AS tmp
    WHERE NOT EXISTS (SELECT `username` FROM `user` WHERE `username` = 'ersks' 
    AND `password` = md5( 'Nepal' )) LIMIT 1

এবং আপনি নিম্নলিখিত কোয়েরি ব্যবহার করে টেবিলটি তৈরি করতে পারেন:

CREATE TABLE IF NOT EXISTS `user` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `username` varchar(30) NOT NULL,
    `password` varchar(32) NOT NULL,
    `status` tinyint(1) DEFAULT '0',
    PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

দ্রষ্টব্য: প্রথম ক্যোয়ারী ব্যবহার করার চেষ্টা করার আগে দ্বিতীয় ক্যোয়ারী ব্যবহার করে সারণী তৈরি করুন।


এমডি 5 পাসওয়ার্ড হ্যাশ .... হাই!
চাদ গ্রান্ট

4

ব্রায়ান হুপার: আপনি প্রায় পয়েন্টটি আঘাত করেছেন তবে আপনার সিনটেক্সে আপনার একটি ত্রুটি রয়েছে। আপনার সন্নিবেশ কখনই কাজ করবে না। আমি আমার ডাটাবেসে পরীক্ষা করেছিলাম এবং এখানে সঠিক উত্তর:

INSERT INTO podatki (datum,ura,meritev1,meritev1_sunki,impulzi1,meritev2,meritev2_sunki,impulzi2)
            SELECT '$datum', '$ura', '$meritve1','$sunki1','$impulzi1','$meritve2','$sunki2','$impulzi2'
                FROM dual
                WHERE NOT EXISTS (SELECT datum,ura
                                      FROM podatki
                                      WHERE datum='$datum' and ura='$ura'

আমি আপনাকে আমার টেবিলের উদাহরণ দিচ্ছি। সন্নিবেশ প্রায় একই রকম, বায়ান হুপার লিখেছেন, কেবলমাত্র আমি অন্য টেবিল থেকে নির্বাচিত FROM DUAL অন্ট রেখেছি। আদরের শুভেচ্ছা, ইভান


2
"দ্বৈত" কী? একটি কীওয়ার্ডে নির্মিত? ব্রায়ান যা বলেছিল তার থেকে আমি কেবল তার তফাত দেখতে পাচ্ছি না ... সম্পাদনা: আরও তদন্ত মিশ্রিত হয়েছে এবং (?) ফলাফলের বিরোধিতা করেছে। যদিও SQL এর দ্বৈত টেবিল পৃষ্ঠাটি জানাচ্ছে যে মাইএসকিউএল দ্বৈত টেবিল সমর্থন করে না, মাইএসকিউএল ম্যানুয়াল যে এটা আছে বলেছেন। আমার নিজের পরীক্ষাটি দেখায় যে এটি নেই, যেহেতু এটি unknown table status: TABLE_TYPEবার্তা দেয় , যদিও ক্যোয়ারিতে ফলাফল পেয়েছে। সম্ভবত মাইএসকিউএল এর FROM DUALধারাটির প্রয়োজন নেই বলে ?
not2qubit

4
insert into customer_keyskill(customerID, keySkillID)
select  2,1 from dual
where not exists ( 
    select  customerID  from customer_keyskill 
    where customerID = 2 
    and keySkillID = 1 )

দ্বৈত একটি ওরাকল টেবিল যা মাইএসকিউএল নয়
উচ্চ অনিয়মিত

3

আপনি ফলাফলটি আপডেট করে নিচ্ছেন না। আপনি প্রাথমিক কলামে নাম কলামটি সংজ্ঞায়িত করতে পারেন বা সেট করতে পারেন এটি অনন্য।


3

আমার একটি সমস্যা হয়েছিল এবং মাইকের যে পদ্ধতিটি আংশিকভাবে কাজ করার পরামর্শ দিয়েছিল, তাতে আমার একটি ত্রুটি ছিল ডাবলিকেট কলামের নাম = '0', এবং আপনার প্রশ্নের সংশ্লেষটি এটি হিসাবে পরিবর্তন করেছে `

     $tQ = "INSERT  INTO names (name_id, surname_id, sum, sum2, sum3,sum4,sum5) 
                SELECT '$name', '$surname', '$sum', '$sum2', '$sum3','$sum4','$sum5' 
FROM DUAL
                WHERE NOT EXISTS (
                SELECT sum FROM names WHERE name_id = '$name' 
AND surname_id = '$surname') LIMIT 1;";

সমস্যাটি কলামের নাম নিয়ে ছিল। sum3 সমষ্টি 4 এর সমান এবং mysql প্রজাতন্ত্রের কলামের নাম নিক্ষেপ করেছিল এবং আমি এই বাক্য গঠনতে কোডটি লিখেছি এবং এটি পুরোপুরি কাজ করেছে,


1
DUAL এর মালিক SYS (SYS ডেটা অভিধানের মালিক, সুতরাং DUAL ডেটা অভিধানের একটি অংশ।) তবে DUAL কোনও ব্যবহারকারীর দ্বারা অ্যাক্সেস করা যায়। টেবিলটিতে DUMMY নামে একটি একক VARCHAR2 (1) কলাম রয়েছে যার মান 'এক্স'। মাইএসকিউএল ডিওএলকে কোয়েরিতে একটি সারণী হিসাবে নির্দিষ্ট করার অনুমতি দেয় যার জন্য কোনও টেবিল থেকে ডেটা প্রয়োজন হয় না D ওরাকলে, টেবিলটিতে DUMMY নামে একটি একক VARCHAR2 (1) কলাম রয়েছে যার মান 'এক্স'। এটি সিডসেট বা ব্যবহারকারী হিসাবে সিউডো কলামটি নির্বাচন করার জন্য উপযুক্ত।
আদনান হায়দার

3

আমারও একই সমস্যা ছিল এবং বিদ্যমান না থাকলে আমার একাধিক সন্নিবেশ করা দরকার। সুতরাং উপরের উদাহরণগুলি থেকে আমি এই সংমিশ্রণে এসেছি ... কারো কারো এটির প্রয়োজন হলে এটি এখানে।

বিজ্ঞপ্তি: এমএসএসকিউএলএর প্রয়োজনীয়তা হিসাবে আমাকে সর্বত্র নামটি নির্ধারণ করতে হয়েছিল ... মাইএসকিউএল * এর সাথেও কাজ করে।

INSERT INTO names (name)
SELECT name
FROM
(
  SELECT name
  FROM
  (
     SELECT 'Test 4' as name
  ) AS tmp_single
  WHERE NOT EXISTS
  (
     SELECT name FROM names WHERE name = 'Test 4'
  )
  UNION ALL
  SELECT name
  FROM
  (
     SELECT 'Test 5' as name
  ) AS tmp_single
  WHERE NOT EXISTS
  (
     SELECT name FROM names WHERE name = 'Test 5'
  )
) tmp_all;

মাইএসকিউএল: তৈরি সারণী names( OIDint- এ (11) না শূন্য AUTO_INCREMENT, namevarchar (32) ক্রমসজ্জিত utf8_unicode_ci না শূন্য, প্রাথমিক কী ( OID), স্বতন্ত্র কি name_UNIQUE(name )) ইঞ্জিন = = 1;

অথবা

এমএসএসকিউএল: টেবিল তৈরি করুন [নাম] ([ওআইডি] INT পরিচয় (1, 1) নাল নয়, [নাম] এনভিচারার (32) নাল নয়, প্রাথমিক কী ক্লাস্টারড ([ওআইডি] এএসসি)); অনন্য তালিকাভুক্ত সূচক তৈরি করুন [সূচি_নামা_নাম] অন [নাম] ([নাম] এএসসি);


2

এই ক্যোয়ারী পিএইচপি কোড ব্যবহার করা যেতে পারে।

এই টেবিলটিতে আমার একটি আইডি কলাম রয়েছে, সুতরাং এই আইডি কলামটি ব্যতীত সমস্ত কলামের জন্য আমার নকল পরীক্ষা করতে হবে:

#need to change values
SET @goodsType = 1, @sybType=5, @deviceId = asdf12345SDFasdf2345;    


INSERT INTO `devices` (`goodsTypeId`, `goodsId`, `deviceId`) #need to change tablename and columnsnames
SELECT * FROM (SELECT @goodsType, @sybType, @deviceId) AS tmp
WHERE NOT EXISTS (
    SELECT 'goodsTypeId' FROM `devices` #need to change tablename and columns names
    WHERE `goodsTypeId` = @goodsType
        AND `goodsId` = @sybType
        AND `deviceId` = @deviceId
) LIMIT 1;

এবং এখন নতুন আইটেমটি যুক্ত করা হবে তবে SETস্ট্রিংয়ে মানগুলি কনফিগার করা থাকলে সারি নেই

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.