繁体   English   中英

sqlite3如何同时搜索多个表?

[英]How to search multiple tables at the same time in sqlite3?

我正在设计一个登录页面。 我有三桌studentsprofessorsdean 我想获取给定用户名的密码并检查它是否正确。 我可以为一张桌子做到这一点:

def get_password_by_username(username):
    c.execute("SELECT password FROM students WHERE username = :username", {"username": username})
    return c.fetchone()

如何同时在所有三个表中搜索用户名? 谢谢。

这个查询:

SELECT username, password FROM students 
UNION ALL
SELECT username, password FROM professors
UNION ALL
SELECT username, password FROM dean

返回 3 个表中的所有用户名和密码,您可以过滤以获取密码,如下所示:

SELECT password
FROM (
  SELECT username, password FROM students 
  UNION ALL
  SELECT username, password FROM professors
  UNION ALL
  SELECT username, password FROM dean
)
WHERE username = :username

如果您想根据学生的username获取与某个学生相关的所有数据,您应该在 SQL 查询中使用JOIN来实现。 您可能需要稍微重新设计数据库才能获得所需的所有数据。

关于如何使用JOIN这个这个)有很多很好的指南,阅读它们以更好地了解如何以所需的方式加入您的表。

非常简单的例子:

SELECT 
    *
FROM 
    students s
LEFT JOIN professors p 
    ON s.professorID = p.professorID
WHERE
    s.username = 'some_username';

你可以用逗号分隔它们

def get_password_by_username(username):
    c.execute("SELECT password FROM students, professors, dean WHERE username=?", (username,)
    return c.fetchone()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM