MYSQL 如何仅从一个表中选择数据,其中该表中的列值与另一表中的列值匹配?

标签 mysql join union

我有两张 table 。我想从表 1 中获取 UID,其中两个表中的主题列都匹配。

Table 1              

UID   SubjectA           
1     Cows           
2     Chickens       
3     Mice           
4     Rabbits        
5     Cows           

Table 2

Name    SubjectB 
A       Cows
B       Cows
C       Cows
D       Cows
E       Mice

预期结果*

获取 UID:1、3、5。

我不太了解联接和并集。两者似乎都结合了两张 table 。这样做的正确方法是什么?

最佳答案

有几种方法可以做到这一点...

首先,我建议使用exists:

SELECT
    UID
FROM
    Table1
WHERE EXISTS (
    SELECT 1
    FROM Table2
    WHERE SubjectB = SubjectA
)

或者,您可以使用joindistinct:

SELECT DISTINCT
    UID
FROM
    Table1 JOIN
    Table2 ON SubjectB = SubjectA

最后,您可以使用in:

SELECT
    UID
FROM
    Table1
WHERE SubjectA IN (
    SELECT SubjectB
    FROM Table2
)

关于MYSQL 如何仅从一个表中选择数据,其中该表中的列值与另一表中的列值匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9674590/

相关文章:

mysql - 性能连接日期介于开始日期和结束日期之间的行

SQL-Union ALL 和 except

javascript - 如何结束异步调用以同步运行?

python - MySQL 没有建立与数据库的连接

javascript - 从两个依赖的下拉列表中获取表单数据到 php

sql-server - SQL Server : ORDER BY in subquery with UNION

sql - 当我想消除重复记录时,Union all 和 union 应该使用哪一个?

php - 选择添加日期后 n 天的日期

mysql - 通过在彼此内嵌套子查询来解决 MySQL 中的 61 个表 JOIN 限制

Mysql从2个不同的表中选择并合并结果