Mysql 错误代码:1054:表存在时“字段列表”中的未知列“表名称。列名称”
我正在尝试运行mySQL查询从数据库中获取数据。以下是我的疑问:Mysql 错误代码:1054:表存在时“字段列表”中的未知列“表名称。列名称”,mysql,sql,join,mariadb,Mysql,Sql,Join,Mariadb,我正在尝试运行mySQL查询从数据库中获取数据。以下是我的疑问: SELECT user, SUM(CASE WHEN sub_status = 'TB' THEN pause_sec END) AS Training_Break, SUM(CASE WHEN sub_status = 'SB1' THEN pause_sec END) AS Short_Break_1, SUM(CASE WHEN sub_status = 'SB2' THEN pause_
SELECT user,
SUM(CASE WHEN sub_status = 'TB' THEN pause_sec END) AS Training_Break,
SUM(CASE WHEN sub_status = 'SB1' THEN pause_sec END) AS Short_Break_1,
SUM(CASE WHEN sub_status = 'SB2' THEN pause_sec END) AS Short_Break_2,
SUM(CASE WHEN sub_status = 'LB' THEN pause_sec END) AS Long_Break
FROM vicidial_agent_log
WHERE event_time >= '2021-04-01' AND
event_time < '2021-04-17' AND
sub_status IN ('TB', 'SB1', 'SB2', 'LB')
GROUP BY user
HAVING COALESCE(`Training Break`, `Short Break 1`, `Short Break 2`, `Long Break`) IS NOT NULL
这将产生预期的结果:
我想显示用户的姓名,但他们在另一个表中。因此,我在这里使用join,如下所示:
SELECT `vicidial_agent_log.user`,
`vicidial_users.full_name`,
SUM(CASE WHEN `vicidial_agent_log.sub_status` = 'TB' THEN `vicidial_agent_log.pause_sec` END) AS Training_Break,
SUM(CASE WHEN `vicidial_agent_log.sub_status` = 'SB1' THEN `vicidial_agent_log.pause_sec` END) AS Short_Break_1,
SUM(CASE WHEN `vicidial_agent_log.sub_status` = 'SB2' THEN `vicidial_agent_log.pause_sec` END) AS Short_Break_2,
SUM(CASE WHEN `vicidial_agent_log.sub_status` = 'LB' THEN `vicidial_agent_log.pause_sec` END) AS Long_Break
FROM `vicidial_agent_log`
INNER JOIN `vicidial_users` ON `vicidial_users.user`=`vicidial_agent_log.user`
WHERE `vicidial_agent_log.event_time` >= '2021-04-01' AND
`vicidial_agent_log.event_time` < '2021-04-17' AND
`vicidial_agent_log.sub_status` IN ('TB', 'SB1', 'SB2', 'LB')
GROUP BY `vicidial_agent_log.user`
HAVING COALESCE(`Training_Break`, `Short_Break_1`, `Short_Break_2`, `Long_Break`) IS NOT NULL
它会产生以下错误:
错误代码:1054“字段列表”中的未知列“代理日志.用户”
但这张桌子是存在的。
此外,如果我删除代码中的反勾号,则会生成以下错误:
错误代码:1054“组语句”中的未知列“代理日志.用户”
以下是我的两个表及其列的字段:
>代理日志的列:[代理日志id,用户,…]
>副用户列:[用户id、用户、通行证、全名,]
我想要的输出应该是https://i.stack.imgur.com/GVeIz.png 仅添加一列,列上有名称。
这是我正在建设的第一个专业项目,任何形式的帮助都可以。我一定是犯了一个初学者的小错误。我不确定我的逻辑或概念是否有问题。我已经研究过其他的帖子,但它似乎对我不起作用。任何形式的帮助都会大有帮助。不要逃避你的帮助!并使用别名!我想我在早些时候的回答中提到了这一点。因此:
SELECT al.user, u.full_name,
SUM(CASE WHEN al.sub_status = 'TB' THEN al.pause_sec END) AS Training_Break,
SUM(CASE WHEN al.sub_status = 'SB1' THEN al.pause_sec END) AS Short_Break_1,
SUM(CASE WHEN al.sub_status = 'SB2' THEN al.pause_sec END) AS Short_Break_2,
SUM(CASE WHEN al.sub_status = 'LB' THEN al.pause_sec END) AS Long_Break
FROM vicidial_agent_log al JOIN
vicidial_users u
ON u.user = al.user
WHERE al.event_time >= '2021-04-01' AND
al.event_time < '2021-04-17' AND
al.sub_status IN ('TB', 'SB1', 'SB2', 'LB')
GROUP BY al.user, u.full_name;
指的是具有名称的列名。在里面。你打算:
`vicidial_agent_log`.`user`
但是,当这些都相当于:
vicidial_agent_log.user
或:
定义表别名时。谢谢,你的解释让它看起来很简单。我绝对不会在我的OneNote文件上添加您的评论。
vicidial_agent_log.user
al.user