我有两张桌子
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转换为枚举或表
答案 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