SQL将2个表连接在一起

时间:2013-11-22 14:52:25

标签: mysql sql sql-server join

我在加入2个表时遇到问题

这是我的第一个名为“users”的表

user_id user_username user_password user_name
1 admin admin123 john
3 test test123 alex

这是我的第二张表“帖子”

post_id post_content post_userid
1 Lorem ipsum .. 1
2第二篇文章.. 3


我想这样表现出来:

post_id | post_content   | post_userid | user_id | user_username | user_password |     user_name
--------|----------------|-------------|---------|---------------|---------------|---------------
1       | Lorem ipsum..  | 1           | 1       | admin         | admin123      | john
2       | Second post .. | 3           | 3       | test          | test123       | alex

我已经尝试过了

SELECT * FROM posts INNER JOIN users ON(post_userid = user_id)

但这仅显示第一篇文章。

然后我试了

SELECT * FROM posts FULL OUTER JOIN users ON(post_userid = user_id)

就像这样出现了

post_id | post_content   | post_userid | user_id | user_username | user_password | user_name
--------|----------------|-------------|---------|---------------|---------------|----------
1       | Lorem ipsum..  | 1           | 1       | admin         | admin123      | john
2       | Second post .. | 3           | NULL    | NULL          | NULL          | NULL
NULL    | NULL           | NULL        | 3       | test          | test123       | alex

4 个答案:

答案 0 :(得分:0)

SELECT * FROM posts AS p LEFT JOIN users AS u ON u.user_id = p.post_userid

答案 1 :(得分:0)

  SELECT 
         post_id,
         post_content,
         post_userid,
         user_id,
         user_username,
         user_password,
         user_name
    FROM posts
    INNER JOIN users ON user_id = post_userid

答案 2 :(得分:0)

因为我认为你的选择应该有效,我怀疑你的id的字符字段。因此我建议你尝试这个加入:

SELECT * 
  FROM posts 
 INNER JOIN 
       users 
    ON (rtrim(ltrim(post_userid)) = ltrim(rtrim(user_id)));

如果有效,你应该像这样清理你的ID:

update posts
set post_userid = ltrim(rtrim(post_userid));

update users
set user_id = ltrim(rtrim(user_id));

你也应该检查你的应用程序是否将这些空格/空格插入到表中并停止这样做。

答案 3 :(得分:0)

Select * From posts p
INNER JOIN users u
ON u.user_id = p.post_userid
相关问题