2011-08-08 29 views
0

這個MySQL查詢:如何在'IN`似乎不允許的情況下改寫MySQL查詢?

SELECT * FROM table_1 t_1 
WHERE t_1.title_search IN 
(
    SELECT title_search FROM t_2 limit 1, 10 
); 

產生這個錯誤:

Error Code: 1235. This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' 

一些谷歌上搜索,我發現mysqlf在MySQL的this Developer Page後。我明白,這種查詢形式不被支持。有沒有辦法來改變這個?

+0

你有t_2中的某種id嗎? – Dalen

+0

查詢的實際用途是什麼?您希望從'title_search'中選擇10個完全隨機的行並獲取關聯的table_1行?虛弱的問題會得到愚蠢的答案。 –

+0

@Dalen,是的,它是一個名爲't_2.id'的主列。 – Aufwind

回答

1
SELECT t_1.* 
FROM table_1 t_1, table_2 t_2 
WHERE t_1.title_search = t_2.title_search 
limit 1,10; 

如果您使用的限制,比方說網絡尋呼,那麼限制是最好的最後一句話,然而,如果你正在使用的限制,以限制從IN子句的結果(你實際上只需要匹配T_2表格的前10條記錄),那麼上述內容是不正確的。

+0

你幾乎在那裏,請指出第二個'title_search'來自哪裏,我會upvote you –

+0

我們不確定table_2存在,從你沒有命名錶的第一個問題,但你使用別名「t_2」 。我添加了表格,並使用了我以爲你打算使用的別名。 –

+0

單挑,我不是「提問者」(在SO = tackOverflow中也稱爲OP)。我只是一個選民。 –

相關問題