我有3张 table
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,从cm表中选取cat_post表中post id为1的所有记录。
我使用过这个查询,但是它会返回所有行两次(重复行)
SELECT DISTINCT * from cm INNER JOIN cat_post ON cat_post.cat_id = 2;
最佳答案
如果 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
) ;
关于mysql - 选择外键 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14216242/