2013-03-15 63 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