我的数据库中有两个表
--------- ---------
| A | | B |
|---------| |---------|
| id | | id |
| name | | a_id |
--------- | name |
---------
仅当表A
中有一条指向表B
(A
)中的记录的记录时,我才想选择表B.a_id = A.id
中的所有记录。
我怎样才能做到这一点?我想要一个解释,所以我理解它是如何完成的。
答案 0 :(得分:1)
使用INNER JOIN
:
SELECT DISTINCT A.*
FROM A
INNER JOIN B ON B.a_id = A.id
由于INNER JOIN
,对于表A
中的每一行,MySQL会查找B
中与JOIN
条件匹配的所有行(B.a_id = A.id
)
SELECT
子句指示它只返回表A
(A.*
)中的列,但由于JOIN
,A
中的一行可以匹配B
中的多行。 DISTINCT
子句注意避免在结果集中多次使用相同的输出行。
答案 1 :(得分:0)
SELECT *
FROM a
WHERE id IN (SELECT a_id from b)
答案 2 :(得分:0)
这是一个基本的INNER JOIN
SELECT a.*
FROM a
INNER JOIN b ON a.ID = b.a_ID
内部联接将选择指定表中与连接条件匹配的所有记录(ON
运算符)。