连接表以查询随机行

时间:2014-08-20 14:21:37

标签: mysql sql

我有两个表,一个包含由单个用户创建的数据,并为该数据分配了唯一的主键。我的第二个表包含上述数据的评级,包含创建评级的用户,实际评级以及被评级数据的ID。

  

表一,[数据] [用户] [data_id]

     

表二,[评级] [用户] [data_id]

我想要一个查询,根据表2中没有包含任何返回随机行的评级的假设,从表1中给出一个随机行。

我认为这需要加入,但我一直陷入困境。这可以通过一个查询来实现吗?

2 个答案:

答案 0 :(得分:2)

我认为应该这样做:

SELECT * FROM tableOne 
WHERE (SELECT COUNT(*) FROM tableTwo WHERE tableTwo.data_id = tableOne.data_id) = 0
ORDER BY RAND()
LIMIT 1

答案 1 :(得分:1)

这应该这样做。它可能比执行COUNT方法快一点,具体取决于您的表:

SELECT *
FROM tableOne t1
LEFT JOIN tableTwo t2
  ON t2.user= t1.user
 AND t2.data_id = t1.data_id
WHERE t2.user IS NULL
ORDER BY RAND()
LIMIT 1

这假定您的user列不可为空。