এমওয়াইএসকিউএল আপডেট স্টেটমেন্ট ইনার টেবিলগুলিতে যোগদান করুন


201

সমস্যাটি কী তা আমার কোনও ধারণা নেই। মাইএসকিউএল 5.0 ব্যবহার করে নিম্নলিখিত এমওয়াইএসকিউএল আপডেট বিবৃতি চালানোর চেষ্টা করার সময় আমি একটি সংকলন ত্রুটি পেয়েছি

  UPDATE  b
SET b.mapx = g.latitude,
  b.mapy = g.longitude
FROM business AS b
INNER JOIN business_geocode g ON b.business_id = g.business_id
WHERE  (b.mapx = '' or b.mapx = 0) and
  g.latitude > 0

সমস্ত ক্ষেত্রের নাম সঠিক। কোন চিন্তা?


এমনকি আমি উপনামটি অপসারণ করেছি, যখন আমি এটিকে একটি নির্বাচন বিতে পরিবর্তন করি * * ব্যবসা থেকে অভ্যন্তরীণ এটি কাজ করে
ভাইব্রেশন অফ লাইফ

উত্তর:


433

এটা চেষ্টা কর:

UPDATE business AS b
INNER JOIN business_geocode AS g ON b.business_id = g.business_id
SET b.mapx = g.latitude,
  b.mapy = g.longitude
WHERE  (b.mapx = '' or b.mapx = 0) and
  g.latitude > 0

হালনাগাদ:

যেহেতু আপনি বলেছেন যে ক্যোয়ারিতে একটি সিনট্যাক্স ত্রুটি পাওয়া গেছে, তাই আমি কিছু টেবিল তৈরি করেছি যার বিরুদ্ধে আমি এটি পরীক্ষা করতে পারি এবং নিশ্চিত করেছিলাম যে আমার কোয়েরিতে কোনও সিনট্যাক্স ত্রুটি নেই:

mysql> create table business (business_id int unsigned primary key auto_increment, mapx varchar(255), mapy varchar(255)) engine=innodb;
Query OK, 0 rows affected (0.01 sec)

mysql> create table business_geocode (business_geocode_id int unsigned primary key auto_increment, business_id int unsigned not null, latitude varchar(255) not null, longitude varchar(255) not null, foreign key (business_id) references business(business_id)) engine=innodb;
Query OK, 0 rows affected (0.01 sec)

mysql> UPDATE business AS b
    -> INNER JOIN business_geocode AS g ON b.business_id = g.business_id
    -> SET b.mapx = g.latitude,
    ->   b.mapy = g.longitude
    -> WHERE  (b.mapx = '' or b.mapx = 0) and
    ->   g.latitude > 0;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0  Changed: 0  Warnings: 0

দেখা? কোনও সিনট্যাক্স ত্রুটি নেই। আমি মাইএসকিউএল 5.5.8 এর বিপরীতে পরীক্ষা করেছি।


আমি এটি চেষ্টা করেছি এবং একই ত্রুটি পাচ্ছি। - কার্যকর করার পরিকল্পনা পাওয়ার ক্ষেত্রে ত্রুটি: আপনার এসকিউএল সিনট্যাক্সে আপনার একটি ত্রুটি রয়েছে; 'মাইক্রোসফট_আইডি = g.busines' হিসাবে লাইন 1
অফ লাইফ

দয়া করে এর ফলাফল পোস্ট করুন show create table business;এবং show create table business_geocode;তাই আমি আমার কোয়েরিটি আরও ভালভাবে পরীক্ষা করতে পারি। ধন্যবাদ।
আসফ

কোনও সিনট্যাক্স ত্রুটি নেই। আমি কেবল এটি নিশ্চিত করেছি এবং আমার উত্তর আপডেট করেছি।
আসফ

4
@ ব্যবহারকারী719316: এই ক্যোয়ারির আগে মজাদার কিছু আছে ... আপনি কি সেমিকোলন মিস করছেন?
ববি

2
@ জোয়াকিম ASকীওয়ার্ডটি alচ্ছিক । তবে আপনি যেহেতু এটি উল্লেখ করেছেন, আমি একই উত্তরটিতে এটি যুক্ত করেছিলাম, কারণ আমি একই ক্যোয়ারিতে এটি প্রথম ওরফে ব্যবহার করেছি।
আসফ

15

SETদফা আসা উচিত পর টেবিল নির্দিষ্টকরণ।

UPDATE business AS b
INNER JOIN business_geocode g ON b.business_id = g.business_id
SET b.mapx = g.latitude,
  b.mapy = g.longitude
WHERE  (b.mapx = '' or b.mapx = 0) and
  g.latitude > 0

-2

মাইএসকিউএল ওয়ার্কবেঞ্চের জন্য, দয়া করে নীচে ব্যবহার করুন:

update emp as a
inner join department b on a.department_id=b.id
set a.department_name=b.name
where a.emp_id in (10,11,12); 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.