2012-10-23 54 views
0

我有這2我的Grails控制器上下面的SQL查詢:MSSQL/SQL查詢條件的錯誤

def query1 = sql.rows("select abc from table_one where cond = 1") 

從QUERY1返回結果給我[{abc=5}]

def query2 = sql.rows("select req from table_two where abc = " +query1) 

我有一個錯誤嘗試運行query2,我不知道爲什麼。

列名abc同時存在於table_onetable_two,我試圖從table_one,從而cond = 1取的abc的價值,並將其分配給變量QUERY1。

與QUERY2,我想從table_two,由此abctable_two值等於QUERY1的價值得到req值。

對此有幫助嗎?從QUERY2

錯誤消息:

Message:Unclosed quotation mark after the character string '[abc:5]'. 

回答

0

您加入使用INNER JOIN

select b.req 
from table_one a 
     INNER JOIN table_two b 
      ON a.abc = b.abc 
where a.cond = 1 

以下語法ANSI SQL-92表。

+0

這解決了它,非常感謝你(: – user1718890

1

爲什麼不使用類似下面的查詢:

select table_two.req 
    from table_one, 
     table_two 
where table_one.cond = 1 
    and table_one.abc = table_two.abc 

連接表像,讓你做一個查詢,通常是兩更高效和更正確(即,兩個查詢之間的數據庫表不會改變)。

+0

哇,我沒想到的!非常感謝。 但是錯誤:'a'附近的語法不正確。 42000/102 – user1718890

+0

@ user1718890,可能您輸入的內容可能有誤。這是符合標準的有效語法_and_ MSSQL也支持它。我會改變它來擺脫別名,因爲這通常只是爲了減少鍵入。 – paxdiablo