mysql - 选择“if”首选项

问题描述:

我需要首选加载50个entires。 假设我有mysql - 选择“if”首选项

User_id mid  preference 
564  djng 2 
123  e3r3 1 
423  u5h5 1 
544  djnw 2 
545  njdw 2 

的事情是先加载具有亲景“1” entires,如果没有“1”,则装入所有其他左侧,有限制50,所以当我们有40个entires与偏好“1”,并且例如100具有优先“2”这样的MySQL查询获取 第一个40个entires具有优先“1”,然后附加左10具有优先“2”

目前我有

$query = "SELECT * FROM $db1 WHERE userid!='$userid' AND mediaid NOT IN 
      (SELECT mid FROM $db2 WHERE uid='$userid')"; 

您的查询似乎很少乐做你问什么,但这样做的一般方法是使用ORDER BYLIMIT

SELECT ... 
FROM ... 
WHERE ... 
ORDER BY preference 
LIMIT 0, 50 
+0

使用顺序由是,只要ORDER BY 1,首先“1”,我猜? – dansr23 2014-12-05 07:46:37

+0

ORDER BY首选项,使用列名 – UnskilledFreak 2014-12-05 07:47:32

+0

否,'ORDER BY 1'将按第一个输出列排序。 'ORDER BY Preference'将按首选项排序,这意味着首选项1将位于顶部。因此,如果您有40行的首选项为1,100行的首选项为2,则您将获得所有首选项1和首选项10,这要归功于LIMIT子句。 – 2014-12-05 07:47:40

$query = "SELECT * FROM $db1 WHERE userid!='$userid' AND mediaid NOT IN (SELECT mid FROM $db2 WHERE uid='$userid') ORDER BY preference ASC LIMIT 50"; 
+0

虽然你的答案可能是正确的,但请参考为什么以及如何工作解释。 – RichardBernards 2014-12-05 08:15:18