MySQL选择列(如果存在),否则选择另一列

时间:2019-08-28 09:05:47

标签: mysql

我有多个具有相同体系结构,相同表和列名称的数据库。例外情况是,即使值相同,数据库之间的一列名称也不同。 我需要编写一个可以应用于所有数据库的通用MySQL查询。我需要解决一个问题,即数据库之间的列名可能会有所不同。

我试图在Google和以前的stackoverflow主题中查找问题,但没有一个问题可以解决我的问题。我试图用“当……那么……否则……否则……”和“如果存在……”陈述来解决问题-不起作用,或者我做错了事。

select(case when (select count(*) > 0
    from information_schema.COLUMNS
    where table_name = 'myTable'
    and column_name = 'EUR')
then EUR
else USD
end)
from myTable

我希望有一个工作查询来检查“ EUR”列是否存在,如果确实存在,则选择它;如果不存在,则选择“ USD”。

1 个答案:

答案 0 :(得分:0)

您可以执行以下任一操作:

  1. 使用两个查询:第一个查询要使用的列,然后从软件中编写一个新的SQL语句,并使用正确的列。
  2. 使用服务器端Prepared SQL Statements来组成服务器端第一个查询的查询。另请以https://stackoverflow.com/a/986088/53538为例。

我不确定您使用什么来运行查询,但是如果它是一种舒适的编程语言,则方法2基本上没有优势-除非MySQL连接具有很大的延迟,否则它不会更快。使用起来更加复杂。