Mysql SQL从表中添加额外的列
我环顾了整个网络,但SQL对我来说是新的,因此由于各种奇特的连接等原因,正确的语法让我不知所措。我如何才能实现以下目标:Mysql SQL从表中添加额外的列,mysql,sql,Mysql,Sql,我环顾了整个网络,但SQL对我来说是新的,因此由于各种奇特的连接等原因,正确的语法让我不知所措。我如何才能实现以下目标: SELECT event.Id, event.Name, event.Date, event.Size, event.Email, verificationdata.Value, /*I want the below value column duplicated, using data from the next comment*/ verification
SELECT
event.Id,
event.Name,
event.Date,
event.Size,
event.Email,
verificationdata.Value,
/*I want the below value column duplicated, using data from the next comment*/
verificationdata.Value
FROM event
INNER JOIN verification on event.Id = verification.EventId
INNER JOIN verificationdata on verificationdata.vId = verification.Id
WHERE event.Id > 00001
AND
(verificationdata.Field = 'Grievances'OR verificationdata.Field = 'ERROR')
/*Pulling THIS data into the duplicated column*/
WHERE verificationdata.Field = 'VideoDurationPTS_0'
Id | Name | Date | Size | Email | verificationdata.Value | verificationdata.Value
01 | Dave | 01-Jan | 2000 | d@d.com | A | B
02 | Bob | 02-Jan | 3000 | b@b.com | A | B
A=(验证数据时的值。字段=申诉)
B=(验证数据字段=持续时间时的值)
任何帮助都会很棒 使用条件聚合尝试以下操作
SELECT
event.Id,
event.Name,
event.Date,
event.Size,
event.Email,
MAX(CASE WHEN verification.Field IN ('Grievances') THEN 'A' END) as val1,
MAX(CASE WHEN verification.Field IN ('VideoDurationPTS_0') THEN 'B' END) as
val2
FROM event
INNER JOIN verification on event.Id = verification.EventId
INNER JOIN verificationdata on verificationdata.vId = verification.Id
WHERE event.Id > 00001
AND
(verificationdata.Field in( 'Grievances','ERROR','VideoDurationPTS_0')
group by event.Id, event.Name, event.Date, event.Size, event.Email
如果我理解正确,您希望:
SELECT e.Id, e.Name, e.Date, e.Size, e.Email,
MAX(CASE WHEN vd.Field IN ('Grievances', 'ERROR') THEN vd.Value END) as field,
MAX(CASE WHEN vd.Field IN ('VideoDurationPTS_0') THEN vd.Value END) as VideoDurationPTS_0
FROM event e INNER JOIN
verification v
ON e.Id = v.EventId INNER JOIN
verificationdata vd
ON vd.vId = v.Id
WHERE e.Id > 00001 AND
vd.Field IN ('Grievances', 'ERROR', 'VideoDurationPTS_0')
GROUP BY e.Id, e.Name, e.Date, e.Size, e.Email;
#1064-在第行的“WHERE verificationdata.Field=”VideoDurationPTS_0“LIMIT 0,30”附近的SQL语法中有一个错误15@Dave,修改了答案,您可以检查nowEdited版本未出错,但返回零行。删除最后一个并返回一列,其中填充了字符串“VideoDurationPTS_0”,而不是verificationdata.Value when verificationdata.Field='VideoDurationPTS_0'中的值。请您提供您的预期输出@DaveI,我们已更新了该问题,以提供预期输出的粗略示例#1054-在“字段列表”中的未知列“vd.Field”@Dave调试是程序员工作的一部分。错误信息非常清楚。我们不知道你的桌子的确切结构,因为它没有给出。因此,调试代码。你有桌子的结构。您的表
verificationdata
是否包含名为Field
的列???如果不是,那就是你的问题。解决方案是用真实的列名替换字段
。当然,与fa06的解决方案相比,这个解决方案与我最初的尝试大不相同。我重申,SQL对我来说是新的,我只能调试我能理解的东西。verificationdata包含两列,字段和值,所以我不确定这段代码是从哪里掉下来的。左对齐SQL很难阅读。