Mysql 获取错误:1241(21000):操作数应包含1列?

Mysql 获取错误:1241(21000):操作数应包含1列?,mysql,sql,database,Mysql,Sql,Database,因此,我试图对我的表进行查询,该表涉及3个5种不同的表(2个组合),它们是:Staff、Event、志愿者、EventStaff和Event志愿者 我试图回答的问题是: “哪些员工和志愿者参加了什么活动,他们的工作职责是什么。包括他们是否具备急救资格。同时提供他们的名字和姓氏、联系电话以及活动的开始日期/时间。” 我不断发现这个错误,我已经在网上四处查看,但似乎无法解决它。缺少一个CONCAT。您还可以使用CONCAT_WS(“”,field1,field2) 你可以这样做。只需确保两个sele

因此,我试图对我的表进行查询,该表涉及3个5种不同的表(2个组合),它们是:Staff、Event、志愿者、EventStaff和Event志愿者

我试图回答的问题是:

“哪些员工和志愿者参加了什么活动,他们的工作职责是什么。包括他们是否具备急救资格。同时提供他们的名字和姓氏、联系电话以及活动的开始日期/时间。”


我不断发现这个错误,我已经在网上四处查看,但似乎无法解决它。

缺少一个CONCAT。您还可以使用CONCAT_WS(“”,field1,field2)


你可以这样做。只需确保两个select语句的列数相等即可。希望这能进一步帮助你

SELECT 
CONCAT(Staff.fName, ' ', 
Staff.lName) AS 'Name', 
Staff.jobRole AS 'Job', 
Volunteer.firstAid AS 'First Aid?',
CONCAT(Volunteer.fName, ' ',  
Volunteer.lName) AS 'Name', 
Staff.contactNo AS 'Phone number', Volunteer.contactNo AS 'Phone number', Event.eventID, Event.eventName AS 'Event Name', Event.startDateTime AS 'Start Date/Time'
    FROM EventStaff
        JOIN Staff
             ON Staff.staffID = EventStaff.staffID
        JOIN Event  
             ON Event.eventID = EventStaff.eventID
        JOIN EventVolunteer
             ON EventVolunteer.eventID = Event.eventID
        JOIN Volunteer
             ON EventVolunteer.volunteerID = Volunteer.volunteerID
ORDER BY Event.startDateTime;

谢谢你这工作,也从代码你可以看到,我得到了很多重复的数据,似乎是一个志愿者配对3个独立的工作人员?所以对于一个10行的查询,它给了我30行?要删除重复数据,可以使用DISTINCT或添加GROUPBY子句。或者你必须在连接中添加AND子句。我的数据库没有重复项,只是我输出的这个查询给了我几乎重复的数据,所以对于每个工作人员,它给了他们3个志愿者?我只是想把志愿者和工作人员列在参加什么活动的人名单上?我想我做这个问题的方式完全错了。这是你截图中想要的输出吗?员工和志愿者是否应该在另一排?因为你的问题是“哪些员工和志愿者参加了什么活动,他们的工作角色是什么”。这并不是要求没有参加活动的工作人员或志愿者,那么你应该左/右加入。顺便说一句,连接等于内部连接。
SELECT 
CONCAT(Staff.fName, ' ', 
Staff.lName) AS 'Name', 
Staff.jobRole AS 'Job', 
Volunteer.firstAid AS 'First Aid?',
CONCAT(Volunteer.fName, ' ',  
Volunteer.lName) AS 'Name', 
Staff.contactNo AS 'Phone number', Volunteer.contactNo AS 'Phone number', Event.eventID, Event.eventName AS 'Event Name', Event.startDateTime AS 'Start Date/Time'
    FROM EventStaff
        JOIN Staff
             ON Staff.staffID = EventStaff.staffID
        JOIN Event  
             ON Event.eventID = EventStaff.eventID
        JOIN EventVolunteer
             ON EventVolunteer.eventID = Event.eventID
        JOIN Volunteer
             ON EventVolunteer.volunteerID = Volunteer.volunteerID
ORDER BY Event.startDateTime;
SELECT 'Staff Member' AS N, Staff.fName + ' ' + Staff.lName AS Name, Event.Id, Event.eventName, Event.startDateTime
FROM Staff 
  INNER JOIN EventStaff
    ON Staff.staffId = EventStaff.staffId
  INNER JOIN Event
    ON Event.eventId = EventStaff.eventId
UNION ALL
SELECT 'Volunteer' AS N, Volunteer.fName + ' ' + Volunteer.lName AS Name, Event.Id, Event.eventName, Event.startDateTime
FROM Volunteer 
  INNER JOIN EventVolunteer
    ON Volunteer.staffId = EventVolunteer.staffId
  INNER JOIN Event
    ON Event.eventId = EventVolunteer.eventId