select distinct param
from(
select '湿度' param
union all
select '温度' param
union all
select '洁净度' param
) x where param='湿度',这个sql 在mysql 8.0.32上执行不对,有啥解决办法吗?
是我的话,倾向于cte做了:
WITH Cte AS (
SELECT '湿度' AS param
UNION ALL
SELECT '温度' AS param
UNION ALL
SELECT '洁净度' AS param
)
SELECT DISTINCT param
FROM Cte
WHERE param = '湿度'
你可以在嵌套查询中添加一个列名,以便在外部查询中引用。例如:
SELECT DISTINCT param
FROM (
SELECT '湿度' AS param
UNION ALL
SELECT '温度' AS param
UNION ALL
SELECT '洁净度' AS param
) x
WHERE param = '湿度';
在内部SELECT语句中,添加“AS param”将“param”列的名称指定为“param”,以便在外部查询中引用。试试看
你的期望结是什么,查询结果是什么。按sql的逻辑查询结果是湿度
SELECT DISTINCT
param
FROM
( SELECT '湿度' param UNION ALL SELECT '温度' param UNION ALL SELECT '洁净度' param ) x
WHERE
param = '湿度'
在 MySQL 8.0.32 中执行这个 SQL 语句会出现错误,是因为最后一个逗号“,”导致的语法问题。正确的写法应该是:
SELECT DISTINCT param
FROM (
SELECT '湿度' AS param
UNION ALL
SELECT '温度' AS param
UNION ALL
SELECT '洁净度' AS param
) x
WHERE param = '湿度';
在子查询中需要给每个 SELECT
子句都起一个别名,否则会提示语法错误。同时,在 WHERE
条件中也应该使用 param
的全称,即 WHERE x.param = '湿度'
。
在修改完毕后,这个 SQL 语句就可以正常执行了。