【发布时间】:2014-08-03 08:35:45
【问题描述】:
我需要能够检查一列是否存在,如果存在,那么我想从中选择。
我正在尝试很多不同的变化,但我什至不确定这是否可行。
这是我最近的尝试:
SELECT
IF (EXISTS (SELECT `Period` AS `Period` FROM myview), `PERIOD`,
IF (EXISTS (SELECT `Country` AS `COUNTRY` FROM myview),`COUNTRY` FROM myview ;
有什么想法吗?
编辑
我在这里看到了另一个问题:MySQL, Check if a column exists in a table with SQL
但我仍然对 if 语句感到困惑。我可以使用上述问题中的答案检查该列是否存在。但我的问题是 - 如果发现结果为真,如何从该列执行 select 语句。
编辑 2
下面的答案表明我应该使用 BEGIN 和 END 语句,这是有道理的。但是,我的查询在第一行抱怨。它说'unexpected IF' - 任何人都可以确认这是否是 MYSQL 的正确语法?
if( exists (SELECT *
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'db_name'
AND TABLE_NAME = 'view_name'
AND COLUMN_NAME = 'column_name') )
begin
SELECT `column_name` FROM `view_name`
end
提前致谢。
【问题讨论】:
-
您只能使用动态 SQL 执行此操作,即使用
prepare语句。 -
这种问题有时表明设计不佳
-
您是如何陷入不知道某列是否存在的情况的?
-
出现问题是因为我需要从多个不同来源提取标准化报告,而没有共同的架构或关系。我可以手动编写每个查询的代码,但是要从中提取太多视图,这变得非常困难。
标签: mysql select if-statement exists