我有两个数据库表,其中包含#34;一对多"关系
比方说,表A和表B
表A中的一个字段是表B中的外键 我想从表A和表B中获取一条记录(给出表A&#39的主键)
表A
id name
--------------------
1 ABC
2 XYZ
表B
id A_id email
------------------------------------------------
1 1 temp@temp1.com
2 1 temp@temp2.com
3 1 temp@temp3.com
4 2 temp@temp4.com
4 2 temp@temp5.com
答案应该是这样的(表B中的单一记录)
对于a.id = 1
A.id, A.name,B.email
-------------------------
1, ABC, temp@temp1.com
对于a.id = 2
A.id, A.name,B.email
-------------------------
1, XYZ, temp@temp4.com
我使用了这个查询,但它返回了表B中的所有记录(因为表B对表A中的每条记录都有多条记录)
SELECT a.id,a.name, b.email FROM A a, B b WHERE a.id = 1 AND b.A_id = a.id
答案 0 :(得分:2)
尝试JOIN
SELECT
a.id,
a.name,
b.email
FROM A a
LEFT JOIN B b ON b.A_id = a.id
WHERE a.id = 1;
GROUP BY b.A_id
答案 1 :(得分:2)
我在这里为演示创建了一个SQL小提琴:http://www.sqlfiddle.com/#!2/15ae7/5
可用于获取所需输出的查询是:
SELECT
tableA.id,
tableA.name,
tableB.email
FROM tableA
LEFT OUTER JOIN tableB ON tableB.A_id = tableA.id
GROUP BY tableB.A_id;
有关JOINS和GROUP BY的更多信息,请参阅以下页面:
http://dev.mysql.com/doc/refman/5.0/en/join.html
https://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
答案 2 :(得分:0)
如果您只想要一条记录,则可以使用LIMIT。
SELECT a.id,a.name, b.email FROM A a, B b WHERE a.id = 1 AND b.A_id = a.id LIMIT 0,1
希望这会对你有所帮助。