MYSQL अपडेट स्टेटमेंट इनर टेबल्स में शामिल हों


201

मुझे नहीं पता कि समस्या क्या है। MySQL 5.0 का उपयोग करते समय निम्नलिखित MYSQL अपडेट स्टेटमेंट को चलाने का प्रयास करते समय मुझे एक संकलन त्रुटि मिलती है

  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

देख? कोई सिंटैक्स त्रुटि नहीं। मैंने MySQL 5.5.8 के खिलाफ परीक्षण किया।


मैंने कोशिश की और मुझे वही त्रुटि मिल रही है। - निष्पादन योजना प्राप्त करने में त्रुटि: आपके एसक्यूएल सिंटैक्स में एक त्रुटि है; जाँच के मैनुअल है कि सही वाक्य रचना के पास का उपयोग करने के लिए अपने सर्वर संस्करण से मेल खाती लाइन 1 पर 'आंतरिक ख के रूप में अद्यतन व्यापार पर b.business_id = g.busines business_geocode जी शामिल हों'
जीवन का कंपन

कृपया के परिणाम पोस्ट करें show create table business;और show create table business_geocode;इसलिए मैं अपनी क्वेरी को थोड़ा बेहतर परीक्षण कर सकता हूं। धन्यवाद।
असफ़

कोई सिंटैक्स त्रुटि नहीं है। मैंने अभी इसकी पुष्टि की और अपना उत्तर अपडेट किया।
असाफ

4
@ user719316: उस प्रश्न से पहले कुछ गड़बड़ है ... क्या आप एक अर्धविराम याद कर रहे हैं?
बॉबी

2
@Joakim ASकीवर्ड वैकल्पिक है। लेकिन जब से आपने इसका उल्लेख किया, मैंने इसे स्थिरता के लिए उत्तर में जोड़ दिया, क्योंकि मैंने इसे उसी क्वेरी में पहले उपनाम पर उपयोग किया था।
आसाप

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.