Mysql 弧度函数内的查询不起作用。为什么?

Mysql query inside radians function not working. Why?

这个有效:

SELECT
    (
        radians(
            44.43763930
        )
    )

这不是:

SELECT
    (
        radians(
            SELECT
                latitude
            FROM
                coords
            WHERE
                coord_id = '1234'
        )
    )

我不明白。问题出在哪里?

我尝试将查询结果转换为十进制,但还是不行。

假设子查询执行 return 一行(而不是更多),这有效:

SELECT radians( (SELECT latitude FROM coords WHERE coord_id = 1234) )

关键是子查询需要用括号括起来,这样数据库就可以理解为标量子查询——即return一列最多一行的查询。

请注意,另一方面,括号 around radians() 在两个查询中都是不必要的。

如果子查询 return 超过一行,则查询在运行时失败。在这种情况下,您可能想要切换到更传统的措辞:

SELECT radians(latitude) FROM coords WHERE coord_id = 1234

请注意,我删除了 coord_id 的文字值周围的单引号;它看起来像一个数字,所以它应该被这样对待(如果该列是类似字符串的数据类型,您可以恢复该更改)。

子查询需要额外的括号。但是,更自然的做法是将函数调用 移动到 子查询中:

SELECT (SELECT RADIANS(latitude)
        FROM coords
        WHERE coord_id = '1234'
       )

当然,您根本不清楚为什么要在此处使用子查询,但那是另一回事。