這是我第一次涉足數據庫中,並想知道是否有可能做以下選擇: 我有兩個表的mysql中選擇
student (id, name, phone)
photos (id, student_id, photo)
我想找回學生的手機是誰的名字是說'湯姆',但前提是他有照片。 是否有可能有這樣的條件?
非常感謝
這是我第一次涉足數據庫中,並想知道是否有可能做以下選擇: 我有兩個表的mysql中選擇
student (id, name, phone)
photos (id, student_id, photo)
我想找回學生的手機是誰的名字是說'湯姆',但前提是他有照片。 是否有可能有這樣的條件?
非常感謝
這就是所謂的INNER JOIN
。
select top 1 name from student s
inner join photos p
on s.id = p.student_id
where name like 'Tom'
是。使用EXISTS
:
SELECT phone
FROM student
WHERE name = 'Tom'
AND EXISTS
(SELECT *
FROM photos
WHERE photos.student_id = student.id
)
或使用JOIN
。你需要爲使用DISTINCT
或GROUP BY
這樣你就不會得到相同的電話20次,如果用戶有20張照片:
SELECT DISTINCT student.phone
FROM student
JOIN photos
ON photos.student_id = student.id
WHERE student.name = 'Tom'
應該是內部連接imo,它不需要DISTINCT,讓應用程序選擇要顯示的照片。另外我認爲你的意思是'相同的照片20'。 –
不,我是說同一部手機。我們有'SELECT phone',而不是'SELECT photo'。 –
另外:'INNER JOIN'與'JOIN'相同。如果我們只想顯示電話而不顯示電話+照片,則不需要使用「DISTINCT」。 –
在這種情況下,你可以使用一個連接。試試這個:
SELECT student.phone
FROM students
INNER JOIN photos
ON student.id=photos.student_id
WHERE student.name LIKE 'Tom'
您需要閱讀連接。 –