我想进行查询以根据 INNER JOIN 选择多个用户电子邮件。目前我可以使用以下方法获取一个值:
"SELECT user_email FROM users INNER JOIN users_to_groups ON users.user_id = users_to_groups.user_id WHERE users_to_groups.group_id = ? AND users_to_groups.user_id = ?";
我想要做的是查询相同的 group_id,但使用一组 users_to_goups_user_id,以便在一个查询中获取多个结果。即返回特定组中用户的多个用户电子邮件。这可能吗?
最佳答案
在内爆占位符数组 ?
后,考虑使用 IN()
子句进行参数化。下面假设使用 PHP 的 PDO。
$placemarkers = array_fill(0, count($user_id_array), "?");
$strSQL = "SELECT user_email FROM users u" .
" INNER JOIN users_to_groups g ON u.user_id = g.user_id" .
" WHERE g.group_id = ?" .
" AND g.user_id IN (" . implode(", ", $placemarkers) . ")";
$sth = $conn->prepare($strSQL);
$sth->bindParam(1, $group_id);
for($i = 0; $i < count($user_id_array); $i++) {
$sth->bindParam(i+2, $user_id_array[$i], PDO::PARAM_INT);
}
$sth->execute();
与 Python MySQL DB-API 游标类似:
placemarkers = ['%s' for i in user_id_array]
params_list = [group_id] + user_id_array
strSQL = "SELECT user_email FROM users u" + \
" INNER JOIN users_to_groups g ON u.user_id = g.user_id" + \
" WHERE g.group_id = %s" + \
" AND g.user_id IN ({})".format(", ".join(placemarkers))
cur = conn.cursor()
res = cur.execute(strSQL, params_list)
关于mysql - 如何使用 sql 从内连接查询中选择多个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49471112/