2013-03-15 52 views
-4

Table Structure從2個表

我從LOG_TABLE user_idchanges選擇,但選擇時,選擇我想user_id在USER_NAME表對應username其中LOG_TABLE和USER_TABLE匹配的ID的。

+1

發表您的查詢...... – 2013-03-16 16:19:40

回答

3

我會在這裏提供了一個額外的答案,因爲你是剛剛起步。這個INNER JOIN代碼將從LOG_TABLE中選擇USER_TABLE中匹配的每一行。

SELECT l.id, l.changes, u.username 
FROM LOG_TABLE l 
INNER JOIN USER_TABLE u ON u.id = l.user_id 

如果你想從LOG_TABLE進行選擇,但真的不關心,如果它在USER_TABLE匹配與否,你可以做一個LEFT JOIN代替:

SELECT l.id, l.changes, u.username 
FROM LOG_TABLE l 
LEFT JOIN USER_TABLE u ON u.id = l.user_id 

當編寫一個JOIN ,明確說明您的JOIN關鍵字和條件總是一個好主意。如果使用隱式JOIN(在FROM子句之後列出的表格,用逗號分隔),如果意外省略了WHERE子句,則可能會產生生成笛卡爾積的風險。

案例的點,這裏就是OP已經使用的問題逗號分隔的JOIN符號,並在不經意間創造了一個笛卡爾積:MySQL Query - Join Issues

+0

感謝,只是我需要什麼 – kajab 2013-03-16 22:30:40

1
SELECT l.changes, u.username 
FROM LOG_TABLE l 
JOIN USER_TABLE u on u.id=l.user_id