【发布时间】:2021-07-28 13:31:49
【问题描述】:
我正在尝试将 3 个表连接到一个输出中,每个表都有一个唯一标识符,应该将它们连接在一起。但是,在我的一个表中,我需要将 3 列连接到一个字符串中,以便它与另一个表(表 1)中的格式匹配。当我运行我的 sql 命令时,我会为每日天气表中的所有列返回 null,这不应该是这种情况。
我为我的前 2 个表连接填充了数据,但是 dailyweather 表只返回空单元格。
我的sql命令是:
SELECT results.*,users.cityid,dailyweather.*
FROM results
LEFT JOIN users on results.id = users.id
LEFT JOIN dailyweather ON results.day = CONCAT(dailyweather.day,"-",dailyweather.month,"-",dailyweather.year) WHERE users.cityid = dailyweather.cityid
表之间应该匹配的列:
- Results.id = users.id
- Results.day = CONCAT(每日天气栏)
- users.cityid = dailyweather.cityid
编辑:根据@Antique-Rahman 和@Claus-Bönnhoff 在 cmets 中的要求,results.day 的格式是 tinytext/string 而不是 DateTime/Timestamp 格式
【问题讨论】:
-
so it matches the format in another table这只是问或麻烦。规范化您的数据 -
results.day 数据类型是 DateTime 还是 Date?您可以将 CONCAT(dailyweather.day,"-",dailyweather.month,"-",dailyweather.year) 转换为 DateTime。
-
我们需要知道 results.day 列的格式。否则我们只能猜测
-
results.day 是 tinytext 格式,不是 DateTime
-
发布表格的样本数据。
标签: mysql