Mysql 从两个表中选择

Mysql 从两个表中选择,mysql,Mysql,我正在从LOG_表中选择user_id更改,但在选择时,我希望user_id对应user_NAME表中的UserName,其中LOG_表的id与user_表的id匹配 您需要的是加入。请查看此特定示例,类似于以下内容是您想要的: SELECT l.changes, u.username FROM LOG_TABLE l, USER_TABLE u WHERE u.id=l.user_id 我将在这里提供一个额外的答案,因为您才刚刚开始。此内部联接代码将从LOG_表中选择在USER_表中具有匹配

我正在从LOG_表中选择user_id更改,但在选择时,我希望user_id对应user_NAME表中的UserName,其中LOG_表的id与user_表的id匹配

您需要的是加入。请查看此特定示例,类似于以下内容是您想要的:

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

我将在这里提供一个额外的答案,因为您才刚刚开始。此内部联接代码将从LOG_表中选择在USER_表中具有匹配项的每一行

SELECT l.id, l.changes, u.username
FROM LOG_TABLE l
INNER JOIN USER_TABLE u ON u.id = l.user_id
如果您想从LOG_表中进行选择,但实际上并不关心它在USER_表中是否有匹配项,您可以改为执行左连接:

SELECT l.id, l.changes, u.username
FROM LOG_TABLE l
LEFT JOIN USER_TABLE u ON u.id = l.user_id
编写联接时,最好明确说明联接关键字和条件。如果使用FROM子句后面列出的隐式联接表(用逗号分隔),如果意外省略WHERE子句,则可能会产生笛卡尔乘积


举个例子,这里有一个问题,OP使用了逗号分隔的连接符号,无意中创建了一个笛卡尔乘积:

谢谢,这正是我需要的
SELECT l.changes, u.username
FROM LOG_TABLE l
JOIN USER_TABLE u on u.id=l.user_id