MySQL>;从数据库中提取每个ID中的一个

MySQL>;从数据库中提取每个ID中的一个,mysql,Mysql,所以基本上我有一些与相关类别相关的分类法。分类关系在cat_1_id、cat_2_id、cat_3_id等中定义。有5种可能的类别 我想运行一个查询,它将允许我提取包含每个类别的三个字段。我知道我可以在三个单独的查询中完成这项工作,但我希望只保留一个。有没有关于我该怎么做的想法 我的问题是: SELECT b.title, b.id, a.thumb_id, a.title, a.friendly_url, a.abstract From `Article` a JOIN `ArticleCat

所以基本上我有一些与相关类别相关的分类法。分类关系在cat_1_id、cat_2_id、cat_3_id等中定义。有5种可能的类别

我想运行一个查询,它将允许我提取包含每个类别的三个字段。我知道我可以在三个单独的查询中完成这项工作,但我希望只保留一个。有没有关于我该怎么做的想法

我的问题是:

SELECT b.title, b.id, a.thumb_id, a.title, a.friendly_url, a.abstract
From `Article` a
JOIN `ArticleCategory` b
WHERE a.status='A' AND 
(a.cat_1_id = 1 OR a.cat_1_id = 2 OR a.cat_1_id = 3 
OR a.cat_2_id = 1 OR a.cat_2_id = 2 OR a.cat_2_id = 3 
OR a.cat_3_id = 1 OR a.cat_3_id = 2 OR a.cat_3_id = 3 
OR a.cat_4_id = 1     OR a.cat_4_id = 2 
OR a.cat_4_id = 3 OR a.cat_5_id = 1 
OR a.cat_5_id = 2 OR a.cat_5_id = 3) 
ORDER BY  a.publication_date DESC LIMIT 3

我不确定我是否完全理解这个用例,但听起来您只需要大量的
或(条件)
。这个问题还不清楚。你能提供样本数据和期望的结果吗?不清楚你在问什么。但是,您可以将where语句重写为
where a.STATUS='a'和(a.cat_1_id介于1和3之间,a.cat_2_id介于1和3之间,或a.cat_3_id介于1和3之间)
我基本上希望通过一个查询提取每个类别中的一个