MySQL解决方案不';还不支持';限制及;在/ALL/ANY/SOME子查询中';
出于某些原因,MYSQL不支持子查询内部的限制:MySQL解决方案不';还不支持';限制及;在/ALL/ANY/SOME子查询中';,mysql,Mysql,出于某些原因,MYSQL不支持子查询内部的限制: SELECT m.* FROM `my_table` m WHERE m.`id` IN ( SELECT o.`id` FROM (SELECT DISTINCT i.`id`, i.`label`, i.`client`, i.`place` FROM `my_table` i ORDER BY i.`label`, -i.`client` DESC, -i.`place` DESC) o WHE
SELECT m.*
FROM `my_table` m
WHERE m.`id` IN (
SELECT o.`id`
FROM (SELECT DISTINCT i.`id`, i.`label`, i.`client`, i.`place`
FROM `my_table` i
ORDER BY i.`label`, -i.`client` DESC, -i.`place` DESC) o
WHERE m.`label` = o.`label` LIMIT 1
);
我已尝试使用此链接中的join:但未成功。有人有线索吗?谢谢。由于子查询只返回一行一列,因此不需要
中的
您可以使用=
:
SELECT m.*
FROM `my_table` m
WHERE m.`id` = (
SELECT o.`id`
FROM (
SELECT DISTINCT i.`id`, i.`label`, i.`client`, i.`place`
FROM `my_table` i
ORDER BY i.`label`, -i.`client` DESC, -i.`place` DESC) o
WHERE m.`label` = o.`label` LIMIT 1
);
但是在编写时,您的查询使用了限制
,而不使用排序依据
(您确实在内部子查询中使用了没有用处的排序依据)。
你想做这样的事吗:
SELECT m.*
FROM `my_table` m
WHERE m.`id` = (
SELECT o.`id`
FROM (
SELECT DISTINCT i.`id`, i.`label`, i.`client`, i.`place`
FROM `my_table` i
) o
WHERE m.`label` = o.`label`
ORDER BY o.`label`, -o.`client` DESC, -o.`place` DESC
LIMIT 1
);
此外,按列的负值降序排序相当于仅按升序排序,因此,orderby
子句可以简化为:
ORDER BY o.`label`, o.`client`, o.`place`
你能分享一下你的代码显示的错误吗?我提供的这段代码的错误是:“这个版本的MySQL还不支持‘LIMIT&IN/ALL/ANY/SOME子查询’你试过使用这个函数吗?我刚刚用ROW_NUMBER()替换了LIMIT 1)它说我的查询有错误。你必须将它用于分区
,这有点困难。请检查这个。