【发布时间】:2014-08-26 19:27:52
【问题描述】:
我在 Maria Db 上为 MySQL 5.5.37 版本构建了以下查询
SELECT (
Coalesce(`w`.`ID`, "") AS `w_ID`,
Coalesce(`w`.`reportID`, "") AS `w_reportID`,
Coalesce(`w`.`date`, "") AS `w_date`,
Coalesce(`w`.`amount`, "") AS `w_amount`,
Coalesce(`w`.`add25`, "") AS `w_add25`,
Coalesce(`w`.add50, "") AS `w_add50`,
Coalesce(`w.deplacement`, "") AS `w_deplacement`,
Coalesce(`t.ID`, "") AS `t_id`,
Coalesce(`t.reportID`, "") AS `t_reportID`,
Coalesce(`t.date`, "") AS `t_date`,
Coalesce(`t.time`, "") AS `t_time`,
Coalesce(`t.amount`, "") AS `t_amount`,
Coalesce(`t.unit`, "") AS `t_unit`,
Coalesce(`t.price`, "") AS `t_price`;
FROM workhours w
LEFT JOIN trip t on w.reportID = t.reportID
WHERE t.reportID = 13)
UNION
SELECT (
Coalesce(`w1`.`ID`, "") AS `w_ID`,
Coalesce(`w1`.`reportID`, "") AS `w_reportID`,
Coalesce(`w1`.`date`, "") AS `w_date`,
Coalesce(`w1`.`amount`, "") AS `w_amount`,
Coalesce(`w1`.`add25`, "") AS `w_add25`,
Coalesce(`w1`.add50, "") AS `w_add50`,
Coalesce(`w1.deplacement`, "") AS `w_deplacement`,
Coalesce(`t1.ID`, "") AS `t_id`,
Coalesce(`t1.reportID`, "") AS `t_reportID`,
Coalesce(`t1.date`, "") AS `t_date`,
Coalesce(`t1.time`, "") AS `t_time`,
Coalesce(`t1.amount`, "") AS `t_amount`,
Coalesce(`t1.unit`, "") AS `t_unit`,
Coalesce(`t1.price`, "") AS `t_price`
FROM `workhours` w1
RIGHT JOIN `trip` t1 on `w1`.`reportID` = `t1`.`reportID`
WHERE `t1`.`reportID` = 13)
当我运行它时,我得到以下错误代码:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'AS `w_ID`, Coalesce(`w`.`reportID`, "") AS `w_reportID`, Coalesce(`w`.`da' at line 2
我看不出这一行应该有什么问题? 有人有想法解决这个问题吗
我希望我提供了足够的信息。
【问题讨论】:
-
除了两个答案:你还有一个
;在第一个select语句的中间(就在第一个from之前) -
where子句将第一个子查询中的left join转换为内连接。所以,我认为只有第二个子查询是必要的。 -
@GordonLinoff 请参阅此问题以获取与问题stackoverflow.com/a/25510443/2733506相关的更多数据
-
@hesamesa0r 。 . .我提供了一种在 MySQL 中获取
full outer join的不同方法。它可能会简化您尝试编写的查询。 -
这个问题是由一个简单的印刷错误引起的。虽然类似的问题可能是这里的主题,但这个问题的解决方式不太可能帮助未来的读者。