我有三个表,分别是:


table1(ID,JName,XVal,YVal)
table2(ID,RName,XVAl,YVal)
table3(ID,TName,XValue,YValue)


XValue,YValue,XVal,YVal是数字类型。我想要所有这些表中的XVal和YVal的最大值和最小值。以前我写过以下查询:

Select max(XVal) FROM table1
Select max(XVal) FROM table2
Select max(XValue) FROM table3


对于最小值:

Select min(XVal) FROM table1
Select min(XVal) FROM table2
Select min(XValue) FROM table3


通过运行这些查询,我可以获得3个不同的最小值和最大值结果,然后,我可以使用逻辑代码在它们之间进行比较并获得最大值和最小值,但是我在这里想要的是单个查询,它将为我完成此操作。
我使用了以下查询:

Select max(XVal) from table1 UNION select max(XVal) from table2 UNION select max(XValue) as XVal from table3 ORDER BY 'MAX(XVal)'DESC LIMIT 1


还有一个:

select max(XVal) as maxval from(select XVal from table1 UNION ALL SELECT XVal from table2 UNION ALL Select XValue from table3) as subquery


但是他们都失败了。有人可以帮我吗?并指出上述查询无法正常工作的原因吗?

最佳答案

这两个版本中第一个的正确语法是:

Select max(XVal) as max_XVal from table1 UNION ALL
select max(XVal) from table2 UNION ALL
select max(XValue) as XVal from table3
ORDER BY max_XVal DESC
LIMIT 1;


您可以在此处使用UNIONUNION ALL

如果要从三个表中获取最小值和最大值:

SELECT MIN(XVal), MAX(XVal)
FROM
(
    SELECT XVal FROM table1
    UNION ALL
    SELECT XVal FROM table2
    UNION ALL
    SELECT XVal FROM table3
) t123;

08-25 12:13