2011-08-08 30 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)。我只是一个选民。 –

相关问题