MYSQL:从两个不同的表中选择VARCHAR字段中的最大值

MYSQL:从两个不同的表中选择VARCHAR字段中的最大值,mysql,sql,Mysql,Sql,我是MYSQL的新手。有两个表,即表A和表B。只需要两个不同表的最大值。 预期输出: AG/2016-17/P/046 select MAX(bv) from( SELECT MAX(CAST(SUBSTRING(In_No, 14, length(In_No)-3) bv AS UNSIGNED)) FROM table_A union all SELECT MAX(CAST(SUBSTRING(In_No, 14, length(In_No)-3) bv AS UNSIGNED)) FRO

我是MYSQL的新手。有两个表,即表A和表B。只需要两个不同表的最大值。
预期输出:

AG/2016-17/P/046
select MAX(bv) from(
SELECT MAX(CAST(SUBSTRING(In_No, 14, length(In_No)-3) bv AS UNSIGNED)) FROM table_A
union all
SELECT MAX(CAST(SUBSTRING(In_No, 14, length(In_No)-3) bv AS UNSIGNED)) FROM table_B) as a

SQL:

AG/2016-17/P/046
select MAX(bv) from(
SELECT MAX(CAST(SUBSTRING(In_No, 14, length(In_No)-3) bv AS UNSIGNED)) FROM table_A
union all
SELECT MAX(CAST(SUBSTRING(In_No, 14, length(In_No)-3) bv AS UNSIGNED)) FROM table_B) as a
有问题。它没有显示正确的输出。请建议我。提前感谢

试试这个:

SELECT In_No, substring_index(In_No, '/', 2) AS In_No_sub
FROM (
    SELECT In_No FROM table_A
    UNION ALL
    SELECT In_No FROM table_B
) t
ORDER BY substring_index(In_No, '/', -1) + 0 DESC
LIMIT 1
试试这个

select MAX(bv) 
from(
    SELECT MAX(CAST(SUBSTRING(In_No, 14, length(In_No)) as UNSIGNED INTEGER)) as bv FROM table_A
    union all
    SELECT MAX(CAST(SUBSTRING(In_No, 14, length(In_No)) as UNSIGNED INTEGER)) as bv FROM table_B
)  as a

您得到的输出是什么?谢谢您的查询。但在我的例子中,它只是显示了这个“AG/2016-17”,而没有显示AG/2016/P/046。@GordonLinoff感谢您的更正。已更新,请查看。@10086仍然显示相同的输出,即“AG/2016-17”。在演示中,它也显示了相同的输出。我的第一个答案给了您
AG/2016-17/P/046
。再次更新,请检查@user007@10086我不知道。我没有得到显示In_No In_No_sub AG/2016-17 AG/2016-17的输出,我想你没有给这两列取相同的名称,所以当你选择max(bv)时,列bv不存在,因为你在两个选择中忘记为bv。或者我编辑了答案,它在转换中有语法错误