【问题标题】:Is there any way to know which table contain the specific entry while searching multiple tables in MySql在 MySql 中搜索多个表时,有什么方法可以知道哪个表包含特定条目
【发布时间】:2017-08-16 07:40:28
【问题描述】:

我在一个数据库中有多个表。我正在所有表格中搜索特定条目。搜索结果正确返回。但是我怎么知道哪个表包含 MySql 中的特定数据/条目?有没有办法在搜索多个表时返回/知道包含特定条目的表名?

Dim statusQuery As String = $"SELECT * FROM management.hostelA,management.hostelB,management.hostelC,management.hostelD where hostelA.occupant1='{stu_name.Text}' or hostelA.occupant2='{stu_name.Text}' or hostelB.occupant1='{stu_name.Text}' or hostelB.occupant2='{stu_name.Text}' or hostelC.occupant1='{stu_name.Text}' or hostelC.occupant2='{stu_name.Text}' or hostelD.occupant1='{stu_name.Text}' or hostelD.occupant2='{stu_name.Text}'"
cmd = New MySqlCommand(statusQuery, con)
Dim sdr As MySqlDataReader
sdr = cmd.ExecuteReader
While sdr.Read
   statusflag = statusflag + 1
End While

我想知道哪个表包含 stu_name.text

【问题讨论】:

  • 能否请您发布您的 SQL 查询?
  • 你是如何执行搜索的?您使用的是工具还是查询?
  • 你怎么会不知道你在搜索哪个表?如果只是一堆UNION,则在每个子联合结果中附加一个字符串字段,并带有正在查询的表名。
  • 这类问题往往是设计不佳的症状
  • 这是一个非常非常非常糟糕的查询。您不是在查询“逗号分隔列表中的表”,而是在查询这些表的笛卡尔积。 (如果这些表中的每一个都有 100 行,那么您正在检查 100000000 个候选结果行;如果文本仅在一个表中,您仍然/“仅”获得 1000000 个最终结果行。) 编辑:哦,我看到比尔已经解决了这个问题……为强调查询问题的数字示例留下评论。

标签: mysql rdbms


【解决方案1】:

您最好单独查询每个表,即一次一个表。然后你会很容易看到这个名字是在哪个表中找到的。

尽管来自@Uueerdo 的评论,但您不是在执行一堆UNION 操作,而是在执行一堆JOIN 操作。这意味着您的查询正在执行四个表的巨大Cartesian product。换句话说,所有四个表的每一行都与所有其他表的每一行匹配。我确定这不是您想要的。

在尝试执行此类操作之前,您需要学习 SQL。

在此之前,您应该一次查询一个表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 2020-05-07
    • 2012-11-18
    • 1970-01-01
    相关资源
    最近更新 更多