[英]How to select data of 2nd table from column values of 1st table in same select statement?
[英]Show all results from 1st table but only 1st result from 2nd table in mySql join statement
我有一个HTML表单,该表单在下表中搜索名字,姓氏,地址(以及为简单起见在此省略的其他几列):
会员
id | firstname | lastname
---+-----------+-----------
1 | Jon | Doe
2 | Mary | Smith
3 | Jon | James
地址
id | member_id | address
---+-----------+-----------
1 | 1 | Home address
2 | 1 | Work address
3 | 2 | Home address
4 | 3 | Home address
5 | 3 | Work address
6 | 3 | Holiday address
成员可以有无限数量的地址。
我如何搜索所有出现的“乔恩”为姓,但仅显示第一个地址? 例如:
Jon Doe Home address
Jon James Home address
到目前为止,这是我们的mySQL语句:
SELECT * FROM tbl_members T1 INNER JOIN tbl_addresses T2 ON T1.id = T2.member_id WHERE firstname = 'Jon'
我们也尝试过:
SELECT * FROM tbl_members T1 LEFT JOIN tbl_addresses T2 ON T1.id = T2.member_id WHERE firstname = 'Jon'
这两个陈述都给我们:
Joh Doe Home address
Jon Doe Work address
Jon James Home address
Jon James Work address
Jon James Holiday address
非常感谢您的帮助!
您可以使用LIMIT
关键字:
SELECT * FROM tbl_members T1 INNER JOIN tbl_addresses T2 ON T1.id = T2.member_id WHERE firstname = 'Jon' LIMIT 1
嗨,我认为您应该执行以下操作:
SELECT T1.firstname, T1.lastname, T2.address
FROM MEMBERS AS T1
INNER JOIN (SELECT member_id, address
FROM ADDRESSES
GROUP BY member_id) AS T2
ON T1.id = T2.member_id
这是SQL Fiddle ,以了解其工作原理...
GL!
编辑:
当然,如果需要,可以在查询末尾添加WHERE子句以从表或名称组中选择特定名称,例如
WHERE firstname = 'joe'
或任何...
您可以在您的SQL语句中添加GROUP BY
子句
SELECT firstname, lastname, address
FROM members
JOIN addresses ON members.id = addresses.member_id
WHERE firstname = 'Jon'
GROUP BY members.id;
尝试使用关键字的上限 ,如所描述这里 。
使用LIMIT 1
,您可以将查询限制为返回的第一行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.