Mysql 每个项目的附加查询?

Mysql 每个项目的附加查询?,mysql,database-design,data-structures,Mysql,Database Design,Data Structures,我有一个很长的项目列表。即: $query = mysql_query("SELECT i.id ORDER by i.id DESC LIMIT 0, 200"); while($row = mysql_fetch_array($query)){ $num_row++; } 产出: [项目1][项目2][项目3]。。。[项目200] 事情是这样的。我需要检查每个项目用户是否喜欢该项目。我是否必须为第一个项目查询的每一行启动附加查询?我们正在讨论200个查询。。。是否

我有一个很长的项目列表。即:

$query = mysql_query("SELECT i.id
            ORDER by i.id DESC LIMIT 0, 200"); 
while($row = mysql_fetch_array($query)){ $num_row++;
}
产出:

[项目1][项目2][项目3]。。。[项目200]

事情是这样的。我需要检查每个项目用户是否喜欢该项目。我是否必须为第一个项目查询的每一行启动附加查询?我们正在讨论200个查询。。。是否需要将此查询加入第一个查询

我正在考虑将“like”表的结构设置为:

id, item_ref, user_id
----------------------
1,     1,     5
1,     5,     5
1,     3,     5
当以用户id 5登录时,应显示:

[第1项喜欢][第2项][第3项喜欢][第4项][第5项喜欢]。。。[项目200]

有什么建议吗


非常感谢

您可以加入like表,并使用该表查看特定用户是否有like。您遗漏了一点查询,但类似于(假设您使用您提到的like表):


like
结果中的like是给定用户是否有like。

这似乎很有效!顺便说一句,$row['liked']为真时给我一个“1”,为假时给我一个“0”,对吗?@James-Yep,对。MySQL认为零为假,非零为真。PHP将正确处理这些问题。
SELECT i.id, l.id IS NOT NULL AS liked
FROM item i
LEFT JOIN likes l ON (i.id = l.item_ref AND l.user_id = YOURUSERIDHERE)
ORDER by i.id DESC LIMIT 0, 200