我想连接两个表来从两个表中获取数据,例如,考虑以下两个表:
Table users:
ID user_name email ... ....
Table messages:
ID user_name message ... ...
user_name
是两个表中的公共列。如何连接两个表,以便从两个表中获取数据。例如,我想从表格message
中选择“messages
”,并从表格“email
”中选择“users
”,其中user_name
是abc。
答案 0 :(得分:2)
如果你看看MySQL网站,那里有很多例子。在大多数情况下,如果您显示了一些您尝试过的查询并且没有得到您想要的结果,那么人们会更乐意回答。
select users.user_name, users.email, messages.message from users,messages where users.user_name=messages.user_name where users.user_name='abc'
这是一个相当基本的SQL语句。你可以做很多聪明的事情。你最好去看看你能做些什么,而不是嵌入'abc'部分,你可以使用参数等。
答案 1 :(得分:2)
使用:
SELECT u.*, m.*
FROM USERS u
JOIN MESSAGES m ON m.user_name = u.user_name
WHERE u.user_name = 'abc'
...查看表中包含消息的所有用户。这意味着没有消息的用户将不会出现在输出中 - 因此您可能希望使用以下内容:
SELECT u.*, m.*
FROM USERS u
LEFT JOIN MESSAGES m ON m.user_name = u.user_name
WHERE u.user_name = 'abc'
我建议:
答案 2 :(得分:1)
SELECT message, email
FROM users U, messages M
WHERE U.user_name = 'abc' AND U.user_name = M.user_name;
答案 3 :(得分:0)
select m.message, u.email
from
messages m join users u on
m.user_name = u.user_name
where
u.user_name = 'abc'
答案 4 :(得分:0)
如果您想要两个表中匹配的数据(所以不是没有消息的用户):
SELECT * FROM users u, messages m WHERE u.user_name = m.user_name;
如果您希望所有用户都知道拥有这些用户的用户的消息和消息:
SELECT * FROM users u LEFT JOIN (messages m) ON (u.user_name = m.user_name);
编辑:对不起,我误读了。
SELECT * FROM users u, messages m WHERE u.user_name = m.user_name AND u.user_name = "abc";