从2个表中选择

时间:2013-03-15 18:19:13

标签: mysql

Table Structure

我正在从LOG_TABLE user_id changes中进行选择,但在选择我希望user_id与USER_NAME表中的username相对应时,其中LOG_ABLE和USER_TABLE的ID匹配。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

你想要的是一个加入。查看http://dev.mysql.com/doc/refman/5.0/en/join.html对于这个具体的例子,你想要的是这样的东西:

SELECT l.changes, u.username
FROM LOG_TABLE l, USER_TABLE u
WHERE u.id=l.user_id

答案 2 :(得分:1)

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