2013-11-20 77 views
1

此代碼給了我一個錯誤:語法錯誤或接近「選擇」錯誤:語法錯誤或接近「選擇」

SELECT name_one, name_two, jaro(
    select name from clients limit 50 as name_one, 
    select name from clients limit 50 as name_two 
); 

這工作得很好:

select jaro('aaa','aaa'); 

但現在我需要從表中獲取數據

+0

你想要選擇什麼? – dasblinkenlight

+0

問題是'jaro()'想爲每個參數設置一個值,但是你提供了一個包含50個名字的表格。 – Tobberoth

+0

@dasblinkenlight name_1 | name_2 | jaro值 – user2983258

回答

1

這裏是你如何可以將所有對名稱的選擇jaro(name1, name2)

SELECT 
    t1.name as name1 
, t2.name as name2 
, jaro(t1.name, t2.name) as jaro 
FROM 
    (select name from clients limit 50) t1 
CROSS JOIN 
    (select name from clients limit 50) t2 

此查詢使用所謂的自我cross join - 它產生的所有對名字從你的clients表。

+0

確定您沒有錯誤代碼? – user2983258

+0

@ user2983258除了您所說的「jaro」函數的調用,您所說的工作正常,查詢應該沒問題([請參閱sqlfiddle上的縮短版本](http://www.sqlfiddle.com/#!15/ da6f0/2))。 – dasblinkenlight

+0

@ user2983258你說得對,我在文章中遺漏了一個'FROM'(儘管演示包含了它)。 – dasblinkenlight

0

我認爲你想要做這樣的事情:

SELECT name, jaro(name, name) 
FROM clients limit 50 

對不對?或者您想要傳遞給jaro()的哪些列?

相關問題