mysql - 只获取完全匹配的记录

标签 mysql join

我有两个表,我需要获取完全匹配的所有记录。意思是在表 B 上连接表 A,其中 B 中的所有记录都具有特定值。

我的表:

产品表

id | name
------------------
 1 | Product one
 2 | Product two
 3 | Product three  

媒体表

id | product_id | feed
----------------------
 1 |          1 |    1
 2 |          1 |    1
 3 |          1 |    3
 4 |          2 |    3
 5 |          2 |    3
 6 |          3 |    1
 7 |          3 |    1
 8 |          3 |    1
 9 |          3 |    1

我要的结果

我想要表 product 中的所有记录,其中表 media 中的所有引用记录都有一个 feed3

p.id | p.name      | m.feed
---------------------------
   2 | Product two |      3

我尝试了 FULL OUTER JOIN,但它也返回了 Product oneProduct twoSQL Fiddle example

SELECT p.id, p.name, m.feed
FROM product p
LEFT OUTER JOIN media m ON p.id = m.product_id
WHERE m.feed = 3

UNION
SELECT p.id, p.name, m.feed
FROM product p
RIGHT OUTER JOIN media m ON p.id = m.product_id
WHERE m.feed = 3

我怎样才能解决这个问题?

最佳答案

    SELECT p.id, p.name, 3 as feed
    FROM product p
    INNER JOIN media m ON p.id = m.product_id
    GROUP BY p.id, p.name 
HAVING max(m.feed)=3 and min(m.feed)=3

关于mysql - 只获取完全匹配的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46947889/

相关文章:

mysql - 获取非标准化格式的数据库数据

c# - 使用linq从多个列表中执行一个对象的方法

php - SQL 连接与连接表中的 where 子句

hadoop - 合并和覆盖 pig 中的数据集

php - 比较时间时的 Laravel 问题 - 日期格式

mysql - 在数据库中进行特定搜索

java - 用于使用局部变量中的值更新列的 SQL 查询

php - 如何从 PHP 中的 SQL 查询中获取一个值?

php - 选择链接表中缺少的行

mysql - 是否可以将 varchar 限制为 MySQL 中的特定字符集?