MySQL检查结果是否有利

时间:2014-03-26 02:32:04

标签: mysql join

我有一个显示搜索结果的查询,我想再添加一个字段,检查每个结果是否在另一个表中显示为优惠结果。为了简单起见,因为大多数搜索参数只添加了一些JOIN和WHERE并且对我的问题不重要,所以让我们考虑一个results表具有所有正确的字段:

id | title | description

结果_favourites表:

userid | resultid

以下是获取结果的MySQL查询(为简单起见,再次没有所有搜索标准):

SELECT id, title, description FROM results

我想要的是这样的东西(让我们说用户是#1):

SELECT r.id r.title, r.description, (something here) AS is_favourited
FROM results AS r
RIGHT JOIN result_favourites AS rf ON rf.resultid = r.id
WHERE userid = 1

is_favourited为1(result_favourites中至少有一行,其中userid和resultid匹配r.id,userid = 1)或0(没有)。

我已尝试使用COUNT(rf.userid) AS is_favourited,但这并不奏效。欢迎任何帮助!

2 个答案:

答案 0 :(得分:0)

我想你想要一个left join,而不是right joinleft join保留第一个表中的所有行。然后检查是否匹配:

SELECT r.id r.title, r.description, (rf.resultid is not null) AS is_favourited
FROM results r LEFT JOIN
     result_favourite rf
     ON rf.resultid = r.id and
        rf.userid = 1;

答案 1 :(得分:0)

试试这个:

SELECT r.id r.title, r.description, if(rf.userid is null,0,1) AS is_favourited
FROM results AS r
left JOIN result_favourites AS rf ON (rf.resultid = r.id)
WHERE userid = 1