2010-02-03 14 views
18

SQL के साथ समस्या क्या है। तालिका परिवर्तक का उपयोग जॉइन क्लॉज में नहीं किया जा सकता है?एसक्यूएल सर्वर: तालिका चर वैरिएबल में उपयोग किया जाता है

त्रुटि संदेश "संदेश 170, स्तर 15, राज्य 1, रेखा 8 रेखा 8: 'टी 1' के पास गलत वाक्यविन्यास है।"

Declare @t TABLE (
    _SportName varchar(50), 
    _Lang  varchar(3) 
) 

insert @t VALUES('Basketball', 'ENG') -- ENG 

UPDATE tblSport t1 
SET 
    t1.SportName = @t._SportName 
FROM 
    @t INNER JOIN tblSport ON (t1.Lang = @t._Lang) 

धन्यवाद।

उत्तर

14

करने के लिए अपने पिछले बयान बदलें:

UPDATE t1, temp 
SET t1.SportName = temp._SportName 
FROM tblSport AS t1 
INNER JOIN @t AS temp 
    ON t1.Lang = temp._Lang 

3

आपका उर्फ ​​t1 गलत स्थान पर है (सटीक सिंटैक्स जांच करने की आवश्यकता)

UPDATE 
    t1 
SET 
    SportName = @t._SportName 
FROM 
    @t INNER JOIN tblSport t1 ON (t1.Lang = @t._Lang) 
8

जस्टिन जवाब सही वाक्य रचना है - आप अस्थायी तालिका में उपनाम असाइन करने की आवश्यकता है (2008 में तालिका प्रकार चर के लिए समान)।

हालांकि, ध्यान रखें कि न तो तालिका चर और न ही तालिका-प्रकार चर के उनके साथ जुड़े आंकड़े हैं, और इसलिए क्वेरी ऑप्टिमाइज़र निष्पादन योजनाओं के संबंध में बहुत संदिग्ध विकल्प बनाने के लिए नेतृत्व कर सकते हैं (क्योंकि यह हमेशा अनुमान लगाएगा कि तालिका परिवर्तनीय में 1 पंक्ति होती है - और इसलिए आमतौर पर नेस्टेड लूप को जॉइन ऑपरेटर के रूप में चुनते हैं)।

2

चर टेबल

Declare @t TABLE (
    _SportName varchar(50), 
    _Lang  varchar(3) 
) 

insert @t VALUES('Basketball', 'ENG') -- ENG 

UPDATE t1 
SET 
    t1.SportName = t2._SportName 
FROM tblSport t1 INNER JOIN 
    @t as t2 ON (t1.Lang = t2._Lang) 
10
t1 उर्फ ​​गलत जगह पर किया जा रहा से

अलावा के लिए उपयोग alias मत भूलना, किसी और, टेबल चर चारों ओर वर्ग कोष्ठक का उपयोग कर किसी अन्य नाम के बजाय उल्लेख किया है। निम्नलिखित के लिए अद्यतन बयान को बदलना भी काम करेगा:

UPDATE t1 
SET 
    t1.SportName = [@t]._SportName 
FROM 
    @t INNER JOIN tblSport t1 ON t1.Lang = [@t]._Lang 

+2

वास्तव में [एसक्यूएल सर्वर 2005 पर परीक्षण किया गया], एक नज़र समय अपने वाक्य रचना खोज करने के बाद भी मुझे मदद की सबसे था। इसके लिए मेरे द्वारा +1। – Hades200621

+1

यह एक फर्क पड़ता है। – Rolo

संबंधित मुद्दे