我有3张桌子
Table: cm
id date title body
1 2013-01-05 18:36:58 SA v AUS SA AUS Body
2 2013-01-04 08:16:20 PA v AP PA v AP Body
Table2: cat_post
post_id cat_id desc
1 2 desccccc
2 2 desccccc
2 1 desccccc
Table3: cats
cat_id name cat_desc
1 Category1 desccccc
2 Category2 desccccc
我想从表cm中选择所有记录,其id在特定的cat_post.cat_id下。
假设cat_id为1,从cat cm中选择cat id为cat_id 1的表cm中的所有记录。
我已经使用过此查询,但这会返回所有行两次(重复行)
SELECT DISTINCT * from cm INNER JOIN cat_post ON cat_post.cat_id = 2;
答案 0 :(得分:1)
如果cat_post(post_id, cat_id)
有UNIQUE
约束,则会执行以下操作:
SELECT cm.*
FROM cm
JOIN cat_post AS cp
ON cp.post_id = cm.id
WHERE cp.cat_id = 1 ;
你也可以使用它:
SELECT cm.*
FROM cm
WHERE EXISTS
( SELECT *
FROM cat_post AS cp
WHERE cp.cat_id = 1
AND cp.post_id = cm.id
) ;
答案 1 :(得分:0)
试试这个:
SELECT DISTINCT cm.*
FROM cm
INNER JOIN cat_post cp ON cm.id = cp.post_id
WHERE cp.cat_id = 1;