[英]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.