我不是一个MySQL的人,但我不能确定该声明你”的意图已经写好了,根据你的意图,这可能是一个有效的答案。
你已经有了:
SELECT IF EXISTS EmployeeName, EmployeeNumber, Position,
ManagementTraining1, ManagementTraining2, ManagementTraining3, ManagementTraining4,
ManagementTraining5, ManagementTraining6, ManagementTraining7 FROM
managementMeetingAttendance ORDER BY EmployeeNumber
既然你没有where子句,你大概不是寻找一个特定的记录,以及使用的“存在”,似乎你只是询问是否表managementMeetingAttendance包含至少一条记录,其结果是列列表和按顺序排列的语句无关紧要。
((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
难道你不知道你的列吗? –
哦,这不是一个规范化的数据库模式。我放火烧了一遍,然后重新开始。 “动态创建表”?听起来更麻烦。 – duffymo
看看[数据库规范化](http://en.wikipedia.org/wiki/Database_normalization)来更好地组织数据。列不应该动态添加和删除。这是一个主要的代码味道。如果你不能这样做,有一组固定的列,并将NULL插入到缺少数据的列中。 –