Select from table if other table points to record
我的数据库中有两个表
1 2 3 4 5 6 7
| --------- ---------
| A | | B |
|---------| |---------|
| id | | id |
| name | | a_id |
--------- | name |
--------- |
我只想在表B中有一条指向表A中的记录(B.a_id = A.id中的记录)的情况下选择表A中的所有记录。
我怎样才能做到这一点?我想要一个解释,这样我就能理解它是怎么做到的。
- …其中ID在(选择…从B)
- 我问这个很愚蠢…我在做一个别人的老项目。我在向内部联接解决方案询问这个问题之前更改了查询,但它没有任何效果。结果他通过Ajax调用重新填充了列表框(带有SQL查询的结果)。所以不管我做了什么,结果都是一样的。:
使用INNER JOIN:
由于INNER JOIN,对于表A中的每一行,mysql查找B中符合JOIN条件(B.a_id = A.id的所有行。
SELECT子句指示它只返回表A(A.*)中的列,但由于JOIN,A中的一行可以匹配B中的多行。DISTINCT子句注意避免在结果集中多次具有相同的输出行。
- distinct还无意中删除了重复的行(如果有)。
这是一个基本的INNER JOIN。
内部联接将从指定表中选择所有与联接条件匹配的记录(ON运算符)。