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

如何使用外键从2个表中获取所有数据

楚举
2023-03-14
问题内容

这是将单个表一分为二的结果:

Table users:
    user_id (pk, ai)
    email
    password
    last_login

Table data:
    user_id (fk to users.user_id)
    data_1
    data_2

要在只有一个表的情况下选择单个记录:

SELECT users.email, users.password, data.data_1, data.data_2
FROM users,data 
WHERE users.email='$user_email' AND users.user_id=data.user_id";

如何从两个表中获得所有记录,这些表的行由users.user_id = data.user_id连接?

Row1: email, password, data_1, data2
Row2: email, password, data_1, data2
Row3: email, password, data_1, data2
Row4: email, password, data_1, data2
...

问题答案:

使用显式join语法可以为您提供帮助。将查询重写为:

SELECT 
    users.email, users.password, data.data_1, data.data_2
FROM 
    users
INNER JOIN 
    data 
ON
    users.user_id=data.user_id
WHERE 
    users.email='$user_email'

并获取所有没有WHERE条件的行:

SELECT 
    users.email, users.password, data.data_1, data.data_2
FROM 
    users
INNER JOIN 
    data 
ON
    users.user_id=data.user_id

它将关注点分开:连接表的条件和限制结果集的条件。



 类似资料:
  • 我需要从sybase ase数据库中的所有用户表创建数据字典。我不能安装像赛贝斯PowerDesigner这样的工具,所以我必须使用SQL查询来实现。 我在论坛的帮助下组成了这个查询,以显示表名、列名、数据类型、大小而不是空约束。但是我无法找到该列是否是主键,或者是否是聚集主键的一部分。 这里有人可以帮助我对所需的表进行必要的连接,以获得指示其主键状态的所需标志吗。我已经阅读了syskey和sys

  • 问题内容: 我有一个表,表中定义了员工关系。IE 等等… 在高级ID是外键的主键表与refreence列EmpId相同的情况下,我想从该表中清除所有行而不删除任何约束。我怎样才能做到这一点? 需要像这样进行删除4、3、2、1 我怎样才能做到这一点 编辑: Jhonny的答案对我有用,但是哪个答案更有效。 问题答案: 我不知道我是否缺少某些东西,但是也许您可以尝试一下。

  • 我正在使用Java、Spring Boot和PostgreSQL 现在我正在尝试从网站发送带有多个paramaters的请求表单,以便在数据库中搜索与这些参数匹配的行。

  • 问题内容: 我要删除所有具有以下条件的外键。 问题答案: 有一个名为的表,用于存储所有表约束。约束类型也保留在该表中。因此,通过过滤此类型,您可以访问所有外键。 如果创建动态查询(用于-对外键进行更改)以更改表,则可以达到更改所有表的约束的目的。 函数及其参数可确保至少有一个外键约束。

  • 我无法从两个表中获得数据,每个表都有条件。文档中没有示例。我只需要来自students表的行,其中一个字段被标记为非活动,来自Guardian表的相应行email字段不为空。卫报有很多学生。我得到了结果,但是我得到了Guardian电子邮件的空值。我尝试了很多ID、型号名称等组合,但我就是不明白。 结果: http://book.cakephp.org/2.0/en/core-libraries/

  • 问题内容: 有一篇关于Redis命令以获取所有可用键的文章,但我想使用Python做到这一点。 有什么办法吗? 问题答案: 采用 优于大量密钥,因为它为您提供了可以使用的迭代器,而不是尝试将所有密钥加载到内存中。 我的redis中有一个1B记录,而且我永远都无法获得足够的内存来一次返回所有密钥。 一对一扫描键 这是一个python代码段,用于从商店中获取与某个模式匹配的所有键,并一一删除它们: 批