Mysql 从同一列中选择两个值

Mysql 从同一列中选择两个值,mysql,sql,select,pdo,Mysql,Sql,Select,Pdo,我试图在查询的一行中选择两个用户名,一个称为“username”,另一个称为“username2”。这是我在atm机上的密码。users表使用用户id的主键 SELECT r.report_id, r.poster_id, r.reporter_id, u.username, (2nd username) FROM reports r, users u WHERE r.report_id = :report_id AND r.reporter_id = u.use

我试图在查询的一行中选择两个用户名,一个称为“username”,另一个称为“username2”。这是我在atm机上的密码。users表使用用户id的主键

SELECT
  r.report_id,
  r.poster_id,
  r.reporter_id,
  u.username,
  (2nd username)
FROM reports r,
  users u
WHERE r.report_id = :report_id
    AND r.reporter_id = u.user_id
    AND r.poster_id = u.user_id

您需要两次加入表
user

SELECT 
        r.report_id,
        r.poster_id,
        r.reporter_id,
        u.username AS ReporterName,
        b.userName as PosterName
FROM
        reports r
        INNER JOIN users u      
            ON r.reporter_id=u.user_id
        INNER JOIN users b
            ON r.poster_id=b.user_id
WHERE
        r.report_id=:report_id

下面是MySQL的代码

        SELECT
          r.report_id,
          r.poster_id,
          r.reporter_id,
          u.username,
          u.username username2,
        FROM reports r,
          users u
        WHERE r.report_id = :report_id
            AND r.reporter_id = u.user_id
            AND r.poster_id = u.user_id

我想在同一行中返回username1=r.reporter\u id=u.user\u id和username2r.poster\u id=u.user\u id。这将给出无效的结果。因为有两列需要从另一个表
user
中获取值,所以您需要连接它两次。还有一件事,我怎样才能添加一个可选子句,比如说它必须在user表中找到reporter\u id,但是poster\u id可以是可选的,无论是否找到它?使用
LEFT join
。您的意思是
poster\u Id
是可选的。对吧?<代码>在r.poster_id=b.user_id上左加入用户b