mysql - Select X as Y query with Where, Having AND ORDER BY Y 给出 1292 警告但没有 ORDER BY 没问题

标签 mysql

我使用 Haversine 查询来计算到属性(property)的距离。但即使它有效,我确实注意到我在 PhpMyAdmin 和 HeidiSQL 中收到警告 1292 消息。我想摆脱那些,但我的搜索已经结束。

查询看起来像这样并且如前所述,工作正常但有警告:

SELECT t1.id, t1.garage, t1.more_info_url, t1.date_b, t1.mak_id, t2.id AS m_id, t1.is_b, t1.price, t1.lat, t1.lng, 
(6371 * ACOS(COS(RADIANS('52.0791005')) * COS(RADIANS(t1.lat)) * COS(RADIANS(t1.lng) - RADIANS('4.2666311')) + SIN(RADIANS('52.0791005')) * SIN(RADIANS(t1.lat)))) AS distance
FROM alert t1
LEFT JOIN users t2 ON t2.id = t1.mak_id
WHERE is_b = 'on' 
AND (date_b BETWEEN CURDATE() - INTERVAL '180' DAY AND CURDATE()) 
AND (t1.price > 180000) 
AND (t1.price < 840000)
HAVING DISTANCE < '140'
ORDER BY distance ASC

这会多次导致此错误:

Warning: #1292 Truncated incorrect DOUBLE value: ''

但是,当我删除最后一行 ORDER BY 子句时,一切都很好。我已经尝试过改变方向,在每个可能的位置都有(单)引号,但我不再理解了。

因此,这会在没有警告的情况下运行:

 SELECT t1.id, t1.garage, t1.more_info_url, t1.date_b, t1.mak_id, t2.id AS m_id, t1.is_b, t1.price, t1.lat, t1.lng, 
    (6371 * ACOS(COS(RADIANS('52.0791005')) * COS(RADIANS(t1.lat)) * COS(RADIANS(t1.lng) - RADIANS('4.2666311')) + SIN(RADIANS('52.0791005')) * SIN(RADIANS(t1.lat)))) AS distance
    FROM alert t1
    LEFT JOIN users t2 ON t2.id = t1.mak_id
    WHERE is_b = 'on' 
    AND (date_b BETWEEN CURDATE() - INTERVAL '180' DAY AND CURDATE()) 
    AND (t1.price > 180000) 
    AND (t1.price < 840000)
    HAVING DISTANCE < '140'

不确定是否相关,但唯一的 DOUBLE 字段是 t1 中的“价格”。它持有房地产价格。我在测试中也用单引号括起来了。恐怕我已经尝试了我所知道的一切。

谢谢。

最佳答案

我试图创建一个 fiddle 并在那里(不是在我自己的设置上,只是在 fiddle 上)关于我的日期字段的错误:

date_available DATE NULL DEFAULT '0000-00-00',

所以我仔细查看并进行了更多测试。最终,在将 date_available 以及 distance 放在 ORDER BY 子句中的单引号中后,警告消失了。

关于mysql - Select X as Y query with Where, Having AND ORDER BY Y 给出 1292 警告但没有 ORDER BY 没问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58382593/

相关文章:

MySQL语法错误我不明白

php - 显示执行语句的sql Yii

php - Sphinxql - 如何在不使用 sphinxapi.php 的情况下在 PHP 中使用 Sphinxql 时使用具有顺序的查询

mysql如何查询不同表中的帖子列表及其多个标签

mysql - 按带分隔符的字符串分组

php - HTML 表格到图像

php - Laravel - 尝试获取非对象形式错误的属性

php - 从表中获取 session_user 排名

PHP/MySQL : Update Query where value is missing from WHERE clause

php - laravel 一对多(从第二个表中选择所有行)