代码之家  ›  专栏  ›  技术社区  ›  Barney Chambers

MYSQL&PHP-每个IN变量返回1个结果,即使变量不是唯一的

  •  0
  • Barney Chambers  · 技术社区  · 6 年前

    user_name 世界其他地区 user_id ,用PHP编写以下语句:

    $stmt = $conn->prepare("SELECT user_name FROM users WHERE user_id IN (?,?,?,?,?,?,?,?,?,?)");

    如果 IN 用户名 每个变量的结果。 然而 ,如果 语句不是唯一的(2个用户id是 foo ),我目前没有 用户名 每个的结果 变量。

    null 如果找不到变量,则返回。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Gordon Linoff    6 年前

    使用 left join 取而代之的是:

    SELECT u.user_name
    FROM (SELECT ? as user_id UNION ALL
          SELECT ? as user_id UNION ALL
          SELECT ? as user_id UNION ALL
          SELECT ? as user_id UNION ALL
          SELECT ? as user_id UNION ALL
          SELECT ? as user_id UNION ALL
          SELECT ? as user_id UNION ALL
          SELECT ? as user_id UNION ALL
          SELECT ? as user_id UNION ALL
          SELECT ? as user_id
         ) uu LEFT JOIN
         users u
         USING (user_id);
    

    WHERE 子句只筛选出行。它不会使它们成倍增加。但是一个连接确实是你想要的。