MySQL查询,从顶视图电影中随机选择剧集,但仅在status = 0时才基于

时间:2014-06-06 07:05:17

标签: mysql

你可以帮我MySQL查询。

我有3张桌子。我只会写出我需要的行:

串行

--------------
| ID | views |
--------------
| 1  | 12113 |
--------------
| 2  | 34    |
--------------
| 3  | 123   |
--------------

SerialReal

----------------
| ID | sorceID |
----------------
| 12 | 1       |
----------------
| 14 | 3       |
----------------
| 15 | 2       |
----------------
| 16 | 4       |
----------------

SerialRealEpisode

---------------------
| ID | srID | status|
---------------------
| 1  | 12   | 0     |
---------------------
| 2  | 12   | 1     |
---------------------
| 3  | 12   | 0     |
---------------------
  • 现在所有行都是INT,status是int但只有0,1,2;
  • Serial.ID = SerialReal.sorceID
  • SerialRealEpisode.srID = SerialReal.id

我想要的是在RANDOM上获得一个SerialRealEpisode项目(LIMIT 1),状态为0.但是这个SerialRealEpisode项目需要来自Serial,即排在前三位的Serial,其中有一些串口,其中有Seri​​alRealEpisode.status = 0随机是它来自前3个串行之一和这些序列中的所有剧集之一

有什么想法吗?如果您需要更多信息,请告诉我。谢谢!

2 个答案:

答案 0 :(得分:2)

使用以下查询

SELECT views form Serial as se 
INNER JOIN SerialReal as sr ON se.id=sr.sorceID 
INNER JOIN SerialRealEpisode as sre ON sr.id=sre.srID 
where sre.status=0

答案 1 :(得分:1)

请试试这个......

 SELECT views FROM (
 SELECT s.`views` FROM `serial` s INNER JOIN `serialreal` sr ON s.id = sr.`sourceid`
 INNER JOIN `serialrealepisode` sre ON sre.`srid` = sr.`id`
 WHERE sre.`status` = '0' GROUP BY s.`views` ORDER BY s.`views` DESC LIMIT 3
 ) AS tbl ORDER BY RAND() LIMIT 1

首先,我按降序选择前3个连续出版物,然后从内部查询的结果集中选择一个随机结果。

希望这会帮助你...