0

我是一名新手程序员,想知道是否有办法以正常工作的格式纠正以下代码。(我似乎总是搞砸语法。)

$query2 = mysql_query("SELECT IF EXISTS EmployeeName, EmployeeNumber, Position,
ManagementTraining1, ManagementTraining2, ManagementTraining3, ManagementTraining4, 
ManagementTraining5, ManagementTraining6, ManagementTraining7 FROM  
managementMeetingAttendance ORDER BY EmployeeNumber") or die(mysql_error());

我正在从动态创建的表中收集数据,并想知道是否可以为可能存在或不存在的列创建类似于“IF EXISTS”语句的内容。

任何帮助将不胜感激!谢谢!

4

2 回答 2

0

我不是一个 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
于 2012-12-13T03:38:58.200 回答
0

不,没有,但您可以先在数据库中查询列名:

select column_name from information_schema.columns where table_name=<TABLE>
于 2012-12-12T20:48:30.660 回答