gpt4 book ai didi

mysql - 选择列具有特定 ID 的所有行

转载 作者:行者123 更新时间:2023-12-01 00:23:51 25 4
gpt4 key购买 nike

所以我有一个设计糟糕的数据库(我认为),我无法更改。这是一个类似 Twitter 的应用程序,用户可以在其中相互关注。每个用户在表中都有它的行,并且在该表中有一个名为“following”的列代表用户正在关注的所有 USERID。在该列中,有一个用逗号分隔的 USERID 列表。因此,假设 ID 为 1 的用户正在关注用户 2 和 3,而 ID 为 2 的用户正在关注用户 1,表格将如下所示,用户 3 未关注任何人。

USERID  |  username         |  following  
-------------------------------------------
1 | some user | 2,3
2 | test1 | 1
3 | test2 |

问题是如何显示用户 1 关注的所有用户?

编辑 1

从 491243 开始没用的代码,贴在这里,也许我在 php 中遗漏了什么

$USERID = $_GET['userid'];//this has a value, so not the problem here
$sql_select = "SELECT B.USERID FROM users A INNER JOIN users B ON FIND_IN_SET(B.USERID, B.following) > 0 WHERE B.USERID = '$USERID'";
$result_select = mysqli_query($link,$sql_select);
while($record = mysqli_fetch_array($result_select))
{
$following = $record['USERID'];
var_dump($following); //result is nothing, not even NULL
}

编辑 2只是为了完整性检查,我这样做了:

 $sql_select = "SELECT USERID FROM users WHERE USERID = '1'";
$result_select = mysqli_query($link,$sql_select);
while($record = mysqli_fetch_array($result_select))
{
$following = $record['USERID'];
var_dump($following); //result is 1, like it`s supposed to be
}

是否有可能是我的 PHP 代码对于回放中的查询有误?

最佳答案

您的表架构状况不佳。你应该正确地规范化它。但是要回答你的问题,你仍然可以使用 JOINFIND_IN_SET

得到你想要的结果
SELECT  b.userid, b.username
FROM tableName a
INNER JOIN tableName b
ON FIND_IN_SET(b.userID, a.following) > 0
WHERE a.userID = 1

我喜欢的设计是

用户表

  • 用户 ID (PK)
  • 用户名

下表

  • UserID (FK) - 也是与 FollowID 的 PK
  • 关注 ID(FK)

关于mysql - 选择列具有特定 ID 的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18812711/

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