我不是一个 mySQL 人,但我不确定你写的语句的意图,根据你的意图,很可能会有一个有效的答案。
你有:
SELECT IF EXISTS EmployeeName, EmployeeNumber, Position,
ManagementTraining1, ManagementTraining2, ManagementTraining3, ManagementTraining4,
ManagementTraining5, ManagementTraining6, ManagementTraining7 FROM
managementMeetingAttendance ORDER BY EmployeeNumber
由于您没有 where 子句,因此您可能不是在寻找特定的记录,并且使用“exists”似乎您只是在查询表 managementMeetingAttendance 是否包含至少一条记录,结果是列列表和 order by 语句无关紧要。
((SELECT Count(*) FROM managementMeetingAttendance) > 0)
如果表包含一行,则评估为 true,否则为 false。
但是,如果您需要确定表是否包含列出的每一列,那么这会稍微复杂一些
根据上一个答案,您需要使用 information_schema.columns 来获取表中存在的列,然后查询此数据 - 如下所示:
IF EXISTS select 1 from (
SELECT Column_Name FROM information_schema.columns
WHERE table_name = 'managementMeetingAttendance' AND column_name = 'EmployeeName'
) eName AND EXISTS select 1 from (
SELECT Column_Name FROM information_schema.columns
WHERE table_name = 'managementMeetingAttendance' AND column_name = 'EmployeeNumber'
) eNum AND EXISTS select 1 from (
SELECT Column_Name FROM information_schema.columns
WHERE table_name = 'managementMeetingAttendance' AND column_name = 'Position'
) ePos AND EXISTS select 1 from (
SELECT Column_Name FROM information_schema.columns
WHERE table_name = 'managementMeetingAttendance' AND column_name
= 'ManagementTraining1'
) eTrng1 AND EXISTS select 1 from (
etc