Mysql 以随机结果顺序有条件地连接两个表的最有效方法是什么

Mysql 以随机结果顺序有条件地连接两个表的最有效方法是什么,mysql,Mysql,这个问题与堆栈交换投票系统非常相似。我想查询一个随机对象的对象表,并获取指定用户对该对象的任何投票 objects table: id user_id message votes table: object_id user_id vote_value select*from objects order by RAND生成一个随机对象,但如何在同一查询中为该对象选择特定用户的投票值?用户可能从未对结果对象投票,因此我不能简单地对id/object\u id进行联接。如果在本例中1的

这个问题与堆栈交换投票系统非常相似。我想查询一个随机对象的对象表,并获取指定用户对该对象的任何投票

objects table:
 id
 user_id
 message

votes table:
 object_id
 user_id
 vote_value
select*from objects order by RAND生成一个随机对象,但如何在同一查询中为该对象选择特定用户的投票值?用户可能从未对结果对象投票,因此我不能简单地对id/object\u id进行联接。

如果在本例中1的用户没有对对象投票,则此查询将为user\u id和vote\u值打印空值:

SELECT o.id, v.user_id, v.vote_value 
FROM objects o LEFT OUTER JOIN votes v ON o.id = v.object_id AND v.user_id = 1
WHERE v.user_id = 1 OR v.user_id IS NULL
ORDER BY RAND() LIMIT 1;

如果用户没有对某个对象进行投票,那么输出应该是什么?它应该只是该对象的id和消息。您还可以使用IFNULL来打印您想要的内容,而不是NULL: