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 BY
和LIMIT
:
SELECT ...
FROM ...
WHERE ...
ORDER BY preference
LIMIT 0, 50
答
$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
使用顺序由是,只要ORDER BY 1,首先“1”,我猜? – dansr23 2014-12-05 07:46:37
ORDER BY首选项,使用列名 – UnskilledFreak 2014-12-05 07:47:32
否,'ORDER BY 1'将按第一个输出列排序。 'ORDER BY Preference'将按首选项排序,这意味着首选项1将位于顶部。因此,如果您有40行的首选项为1,100行的首选项为2,则您将获得所有首选项1和首选项10,这要归功于LIMIT子句。 – 2014-12-05 07:47:40