gpt4 book ai didi

mysql - 使用 mySQL JOIN CASE 选择 "friends"

转载 作者:行者123 更新时间:2023-11-29 00:47:07 24 4
gpt4 key购买 nike

我在这里发布了一个关于根据行中列的值进行 JOIN 的问题。你将需要做一个添加 friend 功能,你将相互添加的 2 个用户的 ID 写入 user_1_id(我的 id)和 user_2_id( friend ID)。当您想查看您与谁成为 friend 时,请根据 user_1_iduser_2_id 是否具有当前用户(正在浏览的用户)的 ID 选择 DEPENDING

我想通了,所以下面是您想要在需要时使用的查询。

这里是查询

$sql_inp = 'SELECT DISTINCT
users.id, users.first_name, users.last_name,
CASE
WHEN friends.user_2_id="'.$_SESSION[USER][id].'" //equal to current user id
THEN (SELECT friends.user_1_id FROM friends WHERE friends.user_2_id="'.$_SESSION[USER][id].'") // if user_2_id is My id, then fetch the other row
ELSE friends.user_2_id // obviously the opposite
END
FROM users
LEFT JOIN friends ON users.id= // this case is completely the same as one above
CASE
WHEN friends.user_2_id="'.$_SESSION[USER][id].'" THEN (SELECT friends.user_1_id FROM friends WHERE friends.user_2_id="'.$_SESSION[USER][id].'")
ELSE friends.user_2_id
END
WHERE friends.user_1_id="'.$_SESSION[USER][id].'" OR friends.user_2_id="'.$_SESSION[USER][id].'" // fetch the row where the either one of the values is equal to My id
';

如果有人遇到问题,希望这对您有所帮助

最佳答案

就个人而言,我讨厌使用 CASE 语句。它使查询看起来很困惑。尝试使用 IF function

$sql_inp = 'SELECT
table1.val1,table1.val2,
table2.val1,table2.val2,
IF(table3.val1="'.$user_id.'",table3.val1,
IF(table3.val2 ="'.$user_id.'",table3.val2,
IFNULL(table3.val2,-1))) users_fetch
FROM table1
INNER JOIN table2 ON table2.val1=table1.val1
LEFT JOIN table3 ON table2.val1=users_fetch';

在此查询中,如果 table3.val1 和 table3.val2 <> $user_id,则 users_fetch 为 -1。

试一试!!!

关于mysql - 使用 mySQL JOIN CASE 选择 "friends",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10094120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com