Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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 - Fatal编程技术网

MYSQL选择,末尾有一个条目

MYSQL选择,末尾有一个条目,mysql,Mysql,堆垛机, 我想从MYSQL表中进行选择,并在MYSQL查询的最后显示ID 54,我编写了以下代码,但与顺序冲突: SELECT * FROM owners WHERE id <= 53 UNION SELECT * FROM owners WHERE id >= 55 ORDER BY owner UNION SELECT * FROM owners WHERE id = 54 我认为即使它能工作,也很麻烦,你能帮忙吗?试着用括号 (SELECT * FROM owners WHE

堆垛机, 我想从MYSQL表中进行选择,并在MYSQL查询的最后显示ID 54,我编写了以下代码,但与顺序冲突:

SELECT * FROM owners WHERE id <= 53
UNION
SELECT * FROM owners WHERE id >= 55
ORDER BY owner
UNION
SELECT * FROM owners WHERE id = 54
我认为即使它能工作,也很麻烦,你能帮忙吗?

试着用括号

(SELECT * FROM owners WHERE id <= 53)
UNION
(SELECT * FROM owners WHERE id >= 55 ORDER BY owner)
UNION
(SELECT * FROM owners WHERE id = 54)
试着用括号

(SELECT * FROM owners WHERE id <= 53)
UNION
(SELECT * FROM owners WHERE id >= 55 ORDER BY owner)
UNION
(SELECT * FROM owners WHERE id = 54)

您不能依赖于工会子选区的顺序。另请参阅许多其他堆栈溢出问题,例如:

这样做:

SELECT * FROM owners
-- Order by "ID category" first
ORDER BY CASE WHEN ID <= 53 THEN 1
              WHEN ID >= 55 THEN 2
              WHEN ID  = 54 THEN 3 END,
-- Then, within "category 55", order by owner, too
         CASE WHEN ID <= 53 THEN ''
              WHEN ID >= 55 THEN owner
              WHEN ID  = 54 THEN '' END

您可能需要通过表达式稍微调整第二个顺序,因为我不确定您希望如何处理所有者的顺序…

您不能依赖工会子选择的顺序。另请参阅许多其他堆栈溢出问题,例如:

这样做:

SELECT * FROM owners
-- Order by "ID category" first
ORDER BY CASE WHEN ID <= 53 THEN 1
              WHEN ID >= 55 THEN 2
              WHEN ID  = 54 THEN 3 END,
-- Then, within "category 55", order by owner, too
         CASE WHEN ID <= 53 THEN ''
              WHEN ID >= 55 THEN owner
              WHEN ID  = 54 THEN '' END

您可能需要稍微调整表达式的第二个顺序,因为我不确定您希望如何处理按所有者排序…

关于您的示例,您希望从所有者中选择所有内容,并显示id为54的行


关于您的示例,您希望从owners中选择所有内容,并首先显示id=54的行


如果您只想在末尾加上54,或许可以将查询缩短为:

SELECT * FROM owners 
WHERE id <= 53 or id >= 55 or id = 54
ORDER BY 
   id = 54, 
   owner

如果您只想在末尾加上54,或许可以将查询缩短为:

SELECT * FROM owners 
WHERE id <= 53 or id >= 55 or id = 54
ORDER BY 
   id = 54, 
   owner

你怎么说它与订单冲突?你怎么说它与订单冲突?这不能保证有效。另请参见:这并不能保证有效。另请参见:查询将返回0行-是的,应该是,或者不是;呵呵,为什么我会想到中间。谢谢你能很快发现ツ即使使用或代替,并且您正在筛选出ID=54。。。你为什么还有那个谓词?你应该去掉WHERE部分。哎呀,短路了。让我说清楚。实际上,他的查询的WHERE条件可以全部删除您的查询将返回0行-是的,应该是,或者不是;呵呵,为什么我会想到中间。谢谢你能很快发现ツ即使使用或代替,并且您正在筛选出ID=54。。。你为什么还有那个谓词?你应该去掉WHERE部分。哎呀,短路了。让我说清楚。真的,他的问题是条件可以全部删除的地方