【问题标题】:Warning: #1292 Truncated incorrect DOUBLE value: 'xxx' [duplicate]警告:#1292 截断不正确的 DOUBLE 值:'xxx' [重复]
【发布时间】:2019-06-14 21:16:02
【问题描述】:

我正在尝试创建一个 MySQL 查询来选择两个团队

使用下面的查询,我不断收到此错误,这不是我以前遇到过的问题,谷歌似乎提供了多种答案,但我无法将修复与我的查询联系起来。

SELECT 
        m.idm,
        m.buteq1,
        m.buteq2,
        tf.eq_name,
        ts.eq_name  
        FROM wpap_match  m
             INNER JOIN wpap_equipes tf
                on tf.eq_name = tf.id
             INNER JOIN wpap_equipes ts
                on ts.eq_name = ts.id

结果:

 Warning: #1292 Truncated incorrect DOUBLE value: 'ESS'

谁能帮忙解决这个问题?

【问题讨论】:

  • 这看起来很可疑:tf.eq_name = tf.id。从语义上讲,“名称”真的应该等于“身份”吗?

标签: mysql sql


【解决方案1】:

通常在连接 2 个表时,ON 子句包含 2 个表的 2 列相等的条件。
但是您的条件是关于同一个表的 2 列(可能是不同的数据类型)相等!
改成这样:

INNER JOIN wpap_equipes tf on m.??? = tf.id
INNER JOIN wpap_equipes ts on m.??? = ts.id

将???替换为表wpap_match的列(每个团队的id)

【讨论】:

  • 似乎这个答案表明问题的原因是隐式数据类型转换。当对两种不同的数据类型进行相等比较时,mysql 将对正在比较的一个(或两个)值进行转换,遵循此处记录的规则dev.mysql.com/doc/refman/5.7/en/type-conversion.html 看起来像 OP 案例在这里“在所有其他情况下,参数是与浮点数(实数)进行比较。”并在尝试转换无效值时抛出 1292 警告/错误 ...
  • 没错,但是这里有一个逻辑错误,因为 OP 可能不知道如何连接 2 个表。
  • 是的,ON 子句中的条件有点奇怪,...比较同一个表中的两列,没有参考前面的表。我认为更成问题的是这个查询not 返回错误,而是返回一个半笛卡尔积。
  • 这是一个简单的比赛/球队关系。我猜在表 wpap_match 中有 2 列,如 team1id 和 team2id 用于 ON 子句。
  • 似乎是一个合理的猜测。当我们唯一需要做的就是破坏 sql、没有数据模型、没有表定义、没有样本数据、没有预期结果的示例时......我们真的只是在猜测。
猜你喜欢
  • 2021-01-26
  • 2020-10-26
  • 1970-01-01
  • 2023-03-28
  • 2014-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多