Mysql枚举与子句中的位置

时间:2013-12-02 12:55:31

标签: mysql select enums where-in

我有两张桌子

tweets(id,user_id,lang); 
//lang is enum (en,fr,ar,ch)

user(id,accepted_lang); 
// accepted_lang is varchar and can vary like en,ar OR ar,fa OR en,fa etc

我希望用户选择所有可接受语言的推文。

select * from tweets where lang in (select accepted_lang from user where id=16); 
#return 0 row

如果我将select accepted_lang from user where id=16替换为其结果fa,ar,则会返回部分行

select * from tweets where lang in ('fa','ar');
#return some of rows

所以实际上我的问题是如何将varchar转换为枚举或表

2 个答案:

答案 0 :(得分:1)

可能是因为你没有提到第二个表并且在你的查询中得到了user_lang而不是accepted_lang

select * from tweets, user where tweet_lang = accepted_lang and user.id=5

但是,您可能希望接受来自特定用户的所有推文

select * from tweets
left join user on tweets.user_id = user.id
where -- your conditions here

答案 1 :(得分:0)

您的查询应该是:

SELECT * FROM tweets, user 
     WHERE tweets.tweet_lang = user.accepted_lang 
           AND user.id=5

由于没有名为user_lang的列,这可能是accepted_lang