我想将我的两个SELECT
语句与if语句组合在一起。目前,我只是进入该行,然后执行if($row['activated'] === 1) { ... run 2nd select statement }
。
必须有一个更好,更快的方法(性能方面)。这就是我想要做的:
例如:(第一个SELECT语句)
$db = $stmt->("SELECT * FROM users WHERE id = :id AND activated = 1");
$db->bindParam(':id', $id);
$db->execute();
如果 SELECT
上方的语句为真,则执行以下操作:(第二个SELECT语句)
$db = $stmt->("SELECT * FROM user_settings WHERE user_id = :user_id");
$db->bindParam(':user_id', $id);
$db->execute();
如何合并这两个SELECT语句?如果它是else
或被激活= 0,则仅进行第一个选择。
奖励问题:
如何使它成为三个 If语句?例如,第二个SELECT语句将如下所示:
$db = $stmt->("SELECT * FROM user_settings WHERE user_id = :user_id AND color = :color");
$db->bindParam(':user_id', $id);
$db->bindParam(':color', $color);
$db->execute();
现在如果该语句为真,请运行以下第三个SELECT语句:
$db = $stmt->("SELECT * FROM friends WHERE user_id = :user_id");
$db->bindParam(':user_id', $id);
$db->execute();
答案 0 :(得分:0)
您可以合并/合并
SELECT * FROM user_settings WHERE user_id = :user_id AND color = :color
和
SELECT * FROM friends WHERE user_id = :user_id
使用JOIN进入一个查询
SELECT
*
FROM
user_settings
INNER JOIN
friends
ON
user_settings.user_id = friends.user_id
AND
user_settings.color = :color
或其他JOIN格式
SELECT
*
FROM
user_settings
INNER JOIN
friends
ON
user_settings.user_id = friends.user_id
WHERE
user_settings.color = :color
或者您可以将其编写为此JOIN。 (很可能较慢)
SELECT
*
FROM (
SELECT
*
FROM
user_settings
WHERE
user_settings.color = :color
) AS user_settings
INNER JOIN
friends
ON
user_settings.user_id = friends.user_id
最好/更快使用的方法可以/将取决于您所使用的索引。