账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    mysql join问题
    34
    0

    有两张表
    user表字段:
    id,username,name

    article表字段:
    id,art_title,art_content,posterId,controllerId

    article表中的posterId是外键,指向user表中的id
    article表中的controllerId也是外键,也指向user表中的id

    比如现在article中有一条数据:

    art_id | art_title | art_content | posterId | controllerId
    1      | title     | content     | 1        | 2
    

    user表中有两条数据

    user_id | username | name
    1       | leo      | 小红
    2       | john     | 小明
    

    我现在要查寻article中的这条数据,但我希望通过posterId和controllerId将poster和controller的信息都查寻出来,请问sql语句该怎么写啊?

    我现在的查寻语句是这样的:

    SELECT article.*,user.*
    FROM article
    LEFT JOIN user
    ON article.id = user.id
    WHERE art_id = 1

    查寻出来的结果是:

    art_id=>1,
    art_title=>title,
    art_content=>content,
    posterId=>1,
    controllerId=>2,//我现在想在上面的sql语句中根据controllerId把controller的信息也查寻出来,请问该怎么写sql语句
    user_id=>1,    //这是根据posterId得到的poster的信息
    username=>leo, //这是根据posterId得到的poster的信息
    name=>小红     //这是根据posterId得到的poster的信息
    2
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 月中天白 普通会员 1楼

      MySQL join操作是在两个或更多的表中查找相关数据的过程。它通常使用LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN或INNER JOIN。以下是各种JOIN操作的基本语法和示例:

      1. LEFT JOIN:返回左表中所有行和右表中匹配行的行数。如果右表中没有匹配行,则返回NULL。

      sql SELECT * FROM table1 LEFT JOIN table2 ON table1.column = table2.column;

      1. RIGHT JOIN:返回右表中所有行和左表中匹配行的行数。如果左表中没有匹配行,则返回NULL。

      sql SELECT * FROM table1 RIGHT JOIN table2 ON table1.column = table2.column;

      1. FULL OUTER JOIN:返回左表和右表中所有行。如果左表或右表中没有匹配行,则返回NULL。

      sql SELECT * FROM table1 FULL OUTER JOIN table2 ON table1.column = table2.column;

      1. INNER JOIN:返回两个表中匹配的行。如果在其中一个表中没有匹配的行,则返回NULL。

      sql SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column;

      在使用JOIN操作时,需要注意以下几点:

      • 如果你想返回匹配行的总数,你应该使用COUNT(*)而不是COUNT(column)。
      • 如果你想返回匹配行的数量,你应该使用COUNT(column)而不是COUNT(),因为COUNT()会返回所有行的数量,而COUNT(column)只会返回匹配行的数量。
      • 如果你想返回匹配行的列的数量,你应该使用COUNT(column)而不是COUNT(column),因为COUNT(column)只会返回匹配行的列的数量,而COUNT(column)只会返回匹配行的列的总数。
      • 如果你想返回匹配行的列的值,你应该使用COUNT(column)而不是COUNT(column),因为COUNT(column)只会返回匹配行的列的值,而COUNT(column)只会返回匹配行的列的总数。
      • 如果你想返回匹配行的行数,你应该使用COUNT()而不是COUNT(column),因为COUNT()会返回所有行的数量,而COUNT(column)只会返回匹配行的数量。
      • 如果你想返回匹配行的数量,你应该使用COUNT()而不是COUNT(column),因为COUNT()会返回所有行的数量,而COUNT(column)只会返回匹配行的数量。
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部