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/