当前位置: 首页 > 面试题库 >

SQL-检查任一表上是否存在数据

夏侯自珍
2023-03-14
问题内容

我的数据库中有两个表,分别用于我的两个用户(图书馆员和学生)的登录详细信息。我已将用户的详细信息分为两个单独的表tblUserLibrarian和tblUserStudent;一个给图书馆员,另一个给学生。每个表中的主键是用户名或ID(LibrarianID和StudentID)。

这些表的概要如下:

tblUserStudent

StudentID   Password     FirstName    LastName

S1201235    pass3           Jane       Smith
S1201289    pass5           Pass       Word
S1202009    pass2           John       Smith

tblUserLibrarian

LibrarianID Password

L1094565    pass4
L1202836    password123
L1202908    qwerty
L1212345    pass3

我有一个问题,当任何一个用户尝试使用其用户名(即其ID)登录时。我想检查它们的用户名是否存在于任一表中,并从存在该用户名的表中返回所有字段。目前,我只能想到一种方法来执行2个查询来检查此内容,但是我认为可以在一个查询中完成。我查找了JOINS和UNIONS,但是我尝试的所有操作似乎均不起作用。

我最近的查询是:

SELECT TOP 1 * FROM tblUserStudent,tblUserLibrarian
WHERE StudentID = "S1202836" OR LibrarianID = "S1202836"

但这会从两个表中返回行,如果用户输入的用户名存在,我只想从一个表中返回用户的详细信息。

我正在使用MS Access 2010进行查询。


问题答案:

您的表没有相同的结构。您可以对两个表都执行UNION ALL来执行查询,但是只返回一些关于图书馆员的信息:

SELECT TOP 1 * 
FROM(
  SELECT studentId AS userID, password, firstName, LastName
  FROM tblUserStudent 
  WHERE StudentID = 'S1201235'
  UNION ALL
  SELECT LibrarianID,password, NULL, NULL
  FROM tblUserLibrarian 
  WHERE LibrarianID = 'S1201235'
) a

[sqlfiddle demo](http://sqlfiddle.com/#!3/2f747/7) (sql服务器,但仅作为示例)

我向ID的列添加了别名,以向您显示userID而不是StudentID,因为UNION从第一个SELECT中获取列名。

我也离开了TOP 1,但是如果您的ID是唯一的,那么您应该只收到一个ID,因此无关紧要



 类似资料:
  • 如果表已经存在,如何检查TarantoolSQL?

  • 问题内容: 我希望这是关于如何使用SQL语句检查SQL Server 2000/2005中是否存在表的最终讨论。 当您用Google搜索答案时,会得到很多不同的答案。有官方/后向和向前兼容的方式吗? 这是两种可能的方法。两种方法中的哪一种是标准/最佳方法? 第一种方式: 第二种方式: MySQL提供的简单 陈述。我正在寻找类似的东西。 问题答案: 对于此类查询,最好始终使用INFORMATION_

  • 问题内容: 我有一个嵌入了数据库的桌面应用程序。当我执行程序时,我需要检查特定的表是否存在,如果不存在则创建它。 给我的数据库一个名为conn的Connection对象,我该如何检查呢? 问题答案: 您可以使用可用的元数据: 有关更多详细信息,请参见此处。还要注意JavaDoc中的注意事项。

  • 问题内容: 在SQL Server数据库中创建列或表之前,我想检查所需的表和/或列是否存在。 我到处搜索并找到2种方法。 存储过程,我不想使用 通过使用该方法并捕获异常来确定表/列是否存在,这对我来说是一个变通方法,但不是一个完美的解决方案。 还有另一种方法可以检查SQL Server中是否存在表/列吗? 问题答案: 要在创建架构之前检查其是否存在,请执行以下操作: 检查是否存在一列;您可以使用,

  • 问题内容: 假设我的表格中有100列。我不知道特定值可能存在于哪些列中。因此,我想检查所有列,如果它存在于100列中的任何一列中,我想选择它。 我搜索了一下,在大多数地方,解决方案似乎是以下内容 我同意,我也读过一些论坛,据说这样做是对数据库设计不利的情况,但是我正在研究数据库中已经存在的表。 有没有更聪明的方式来做到这一点? 问题答案: 一种方法是通过反转操作员 如果您不想手动输入列,则使用该列

  • 问题内容: 我正在尝试编写一个查询,该查询将检查MySQL中的特定表是否具有特定列,如果没有,则创建它。否则什么都不做。在任何企业级数据库中,这实际上都是一个简单的过程,但是MySQL似乎是一个例外。 我以为 可以工作,但是失败很严重。有办法吗? 问题答案: 这对我来说很好。 使用PHP就像…