Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-选择到固定行数为止_Mysql_Sql_Select - Fatal编程技术网

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结束