0

我有这个 mysql 数据库,我需要在其中执行更大的 MySQL 查询。用户 A 在名为 users 的表中有一行。在名为“trackers”的字段的值中,有一个逗号分隔的值,其中包含用户 A 收到通知的朋友的 id。

MySQL --> users (table) --> trackers (field) --> 2,3,4 (value)。

MySQL 服务器必须在一次查询中用逗号分隔值。我认为如果服务器只执行一个查询而不是使用 PHP foreach 每个值执行一个查询,它对服务器会更友好。

我需要这样的查询: SELECT * FROM users WHERE in (SELECT trackers FROM users WHERE id = $me SEPERATED BY ,)

4

2 回答 2

1

我对此的感觉是,表格设计不适合您希望实现的目标。我个人的方法是将跟踪器分成自己的表格。由于一个用户基本上是在跟踪另一个用户,因此该表将与用户表链接两次。

请参阅下面我建议的表格设计。

建议的表设计

因此,此设计将允许您通过如下查询选择用户正在跟踪的所有用户:

SELECT users.* 
FROM trackers
INNER JOIN users ON id = tracker
WHERE user.id = {your user id}
于 2012-04-27T16:47:17.930 回答
0

我一直发现,对于像你这样的查询,做 2 个查询通常是最好的解决方案。

首先:

SELECT trackers FROM users WHERE `user_id` = $me

然后第二次,将第一次的结果分解为:

SELECT * FROM users WHERE `id` IN (".implode(',',$results).")

不确定这是否是最好的解决方案,但根据我的经验,它对我工作的某些网站的页面加载时间产生了巨大的影响。

于 2012-04-27T16:30:29.960 回答