MySQL-选择到固定行数为止
我想寻求帮助,因为我无法在MySQL-选择到固定行数为止,mysql,sql,select,Mysql,Sql,Select,我想寻求帮助,因为我无法在MySQL中执行SELECT语句 SELECT应该返回350行,只要第一行是根据特定条件填充的,如果还有空间,其余的就用另一个条件填充。您的意思是: SELECT column(s) FROM TABLE WHERE column = 42 LIMIT 350 还是希望第一行中的“column=42”,然后读取350行?在ORDER BY子句和LIMIT子句中使用表达式 例如: SELECT ... FROM mytable t ORDER BY IF(
MySQL
中执行SELECT
语句
SELECT
应该返回350行,只要第一行是根据特定条件填充的,如果还有空间,其余的就用另一个条件填充。您的意思是:
SELECT column(s) FROM TABLE WHERE column = 42 LIMIT 350
还是希望第一行中的“column=42”,然后读取350行?在ORDER BY子句和LIMIT子句中使用表达式 例如:
SELECT ...
FROM mytable t
ORDER
BY IF(( t.foo >= 117 AND t.bar IN (2,3,5) ),0,1)
, IF(( t.foo >= 0 ),0,1)
, IF(( t.bar = 42 ),0,1)
, ...
LIMIT 350
首先订购满足条件t.foo>=117和(2,3,5)
中的t.bar的行。(因为ORDER BY将对表达式的返回进行操作。将计算该条件,IF函数将返回0或1。ORDER BY子句中的后续表达式将以相同的方式进行计算
LIMIT子句将限制返回的行数,但不能保证查询不会返回更少的行,例如,如果mytable包含的行数少于350行。使用
LIMIT
限制返回的行数。您可以使用ORDER BY
来说明您喜欢哪一行
假设您正在查找col='best'的记录,但如果没有足够的记录(即350),您还需要col='ok'的行:
select *
from mytable
where col in ('best', 'okay')
order by case when col = 'best' then 1 else 2 end
limit 350;
我建议你先把要求改为12行,而不是350行,然后再看。注意,没有订单的限制是毫无意义的。嗨,大卫!谢谢你的帮助!但是我正在寻找下面的答案。嗨,托尔斯滕!谢谢你的帮助!但是我正在寻找上面的答案。嗯,a实际上,斯宾塞7593和我给了你大致相同的答案:使用带有条件的
ORDER BY
子句来实现你想要的。如果只是MySQL,那么CASE
就是标准SQL。嗨,斯宾塞!谢谢你的帮助!这正是我所需要的。更符合ANSI标准的是使用CASE表达式来代替MySQL规范ific IF()函数…例如,当t.foo>=117时,按大小写排序,然后0其他1结束