mysql - 从两个表中选择 MAX 返回一个奇怪的值

标签 mysql

Table 'orders'   
    +----+-------+
    | id | refId |
    +----+-------+
    |  3 | 3     |
    |  7 | 5     |
    |  8 | 200   |
    |  9 | NULL  |
    | 10 | NULL  |
    | 21 | NULL  |
    +----+-------+

Table 'transactions'
    +----+-------+
    | id | refId |
    +----+-------+
    | 23 |   200 |
    | 24 |   201 |
    | 22 |   202 |
    | 26 |   203 |
    | 25 |   204 |
    | 27 |   205 |
    +----+-------+

所以我得到了这两个表,我想获得 refId 的最大值(即 205)

我使用的是下一个查询:

SELECT MAX( cacat ) 
FROM (

    SELECT refId AS cacat
    FROM orders
    UNION 
    SELECT refId AS cacat
    FROM transactions

    ) AS pla

->>返回

+------------+
| MAX(cacat) |
+------------+
|          5 |
+------------+

感谢任何帮助,谢谢!

最佳答案

获得所需结果的一种方法是将文本 refId 值转换为数字:

SELECT MAX( cacat ) 
FROM
(
    SELECT CAST(refId AS UNSIGNED) AS cacat FROM orders
    UNION ALL
    SELECT CAST(refId AS UNSIGNED) FROM transactions
) AS pla

注意:文本不是数字,数字也不是文本。如果您确实需要 refId 列表现得像数字,那么也许可以考虑将此信息存储在某种 MySQL 数字列中。

Demo

关于mysql - 从两个表中选择 MAX 返回一个奇怪的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47094395/

相关文章:

Mysql 数据类型

php - "Couldn' t find class"Doctrine子查询

php - mysql中的数据顺序,在php中按顺序显示

php - WordPress Form php代码提交空白值

php - 查找多个插入查询的 auto_increment 值

mysql - 一个简单的循环问题

MySQL 一张表与多张表的性能对比

javascript - 如何在 Knex JS 中使用 IS NOT NULL

php - 将 SQL 输出存储在变量中

python - mysql 如何对文本数据进行排序?