【问题标题】:How to check multiple tables existence in mysql?如何检查mysql中是否存在多个表?
【发布时间】:2018-02-07 10:52:55
【问题描述】:

我使用 Entity Framework 和 mysql,我必须使用原始 SQL (FromSQL)。

我将合并这些表,但我必须知道每个表是否存在于数据库中,因为它必须存在于联合表中。我想按名称检查所有表并选择现有表并将它们合并。

我认为我应该对每个表使用多个查询来了解它们的存在。

Show Table Like 'Log_2018_01_01'
Show Table Like 'Log_2018_01_02'
Show Table Like 'Log_2018_01_03'
Show Table Like 'Log_2018_01_04'
Show Table Like 'Log_2018_01_05'
Show Table Like 'Log_2018_01_06'
Show Table Like 'Log_2018_01_07'
Show Table Like 'Log_2018_01_08'

我会把它存储在

List<string> ExistTables;

然后我将使用 ExistTable 列表和 for 循环编写联合 SQL。

string sql = "";
for(var i in ExistTables)
{
    sql += //union tables which are in exist table list.
}

这是个好方法吗?

如果可能,我只想为 1 个查询获取现有表。

【问题讨论】:

  • 我会询问 information_schema.tables。

标签: c# mysql entity-framework


【解决方案1】:

尝试以下查询:

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '<Your table name>'

【讨论】:

  • 谢谢,但是我应该如何对这个查询进行多项检查?像...查询多个名称但只获取现有表等?如果不能,那么我必须查询多个。
  • 如果你可以制作所有表的数组,那么你可以使用 for 循环应用这个查询。
【解决方案2】:

Gajjar Parth 说了什么,但如果您无权查询元数据,请尝试

select count(*) from <tablename>

对于每个表,然后进行相应的操作。

【讨论】:

  • 感谢您回答我的问题。但是有没有办法只查询1次?
  • 我会在存储过程中执行此操作,但如果由于某种原因无法执行存储过程,您可以尝试使用等效的批处理文件作为动态 SQL。
  • 试试这个:INSERT SELECT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME IN ("", "table2",...)'
猜你喜欢
  • 2010-12-21
  • 1970-01-01
  • 2022-12-20
  • 2021-08-23
  • 2011-09-19
  • 2014-04-10
  • 1970-01-01
  • 1970-01-01
  • 2020-04-05
相关资源
最近更新 更多