MySQL单语句合并两个表

2023-11-30

我确信这个问题已经被问过/回答了,但我不知道这种操作是如何调用的,而且我的 SQL 知识是有限的。

我正在寻找一个 SQL 语句来合并两个表:

表用户:

ID   hash
=========
1    abc
2    def
3    ghi

和 USER_FIELD 表:

ID  user_id key        value
=============================
1   1       firstname  John
2   1       lastname   Doe
3   2       firstname  Justin
4   2       lastname   Case

现在我想知道我是如何得到这个观点的:

ID  hash  firstname   lastname
================================
1   abc   John        Doe

因此,如果我在用户字段表中添加一个带有键“电子邮件”的附加条目,我会在最后一个结果中得到一个新列

这仅在 MySQL 中可行还是我必须在 PHP 中更改结果?

这是否是一个好的数据库设计,或者我应该放弃它而采用不同的数据库设计(哪一个?)


你可以用join and a group by:

select u.*, firstname, lastname
from user u join
     (select uf.user_id,
             max(case when key = 'firstname' then value end) as firstname,
             max(case when key = 'lastname' then value end) as lastname
      from user_field uf
      group by user_id
     ) uf
     on uf.user_id = u.id;

您还可以通过一系列连接来完成此操作:

select u.*. firstname.value, lastname.value
from user u join
     user_field firstname
     on u.id = firstname.user_id and firstname.key = 'firstname' join
     user_field lastname
     on u.id = lastname.user_id and lastname.key = 'lastname';

您的结果似乎仅限于一个用户 ID。你可能想要一个where带有此过滤器的子句。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL单语句合并两个表 的相关文章

  • filter_input() 何时删除 POST 变量的斜杠?

    我创建了一个小型 PHP 脚本 它在 PHP 5 2 17 的服务器上运行magic quotes gpc指令已启用 我没有对 php ini 文件的写访问权限 并且我想从用户输入中删除所有斜杠 即使magic quotes gpc指令被关
  • 一张表中按最大日期过滤重复行的 SQL 查询

    我有一个 SQL 数据库 persons 它具有基于 IDNum 列的重复条目 我需要查询条目并仅根据最新创建日期显示行或重复条目 这是查询 SELECT IDNum PersonPGUID CreatedDateTime FirstNam
  • mysql 详细查询字符串,如通配符

    不知道如何标题我的问题 哈哈 下面是我需要的 我的数据库中的值如下所示 test example 1 test example 2 test example TD 1 这些值的长度可以不同 test example 只是一个示例 某些值将具
  • 让用户渲染自己的 SVG 文件的安全隐患

    我计划让网站用户上传他们自己的 SVG 文档并使用inkscape or svg2pdf 用户要么未经身份验证 要么经历一个简单的注册过程 所以我预计会有一些黑客尝试 我可以采取哪些过滤措施来最大程度地减少安全威胁 Inkscape 似乎并
  • 使用php插入sql数据库时出错

    我有一个带有 MySQL 插入查询的程序 sql INSERT INTO people person id name username password email salt VALUES person id name username p
  • 使用来自另一个的 SELECT 更新表,但字段为 SUM(someField)

    基本上我有这样的事情 UPDATE Table SET Table col1 other table col1 FROM Table INNER JOIN other table ON Table id other table id 问题是
  • PHP 和 MySQL 的重音字符错误

    我的问题是 直接通过 PHP 编写的内容是正确重音的 但是当重音单词来自 MySQL 时 字母会像这样 我尝试使用html charset as ISO 8859 1它修复了 MySQL 字母 但破坏了其他字母 解决这一切的一种方法是设置我
  • PHP 负面因素不断增加

    我这里有这个代码 remaining 0 foreach clientArrayInvoice as key gt row remaining remaining row total 它的作用是 它获取总计值并将它们相加 但是当我有负值时
  • 无法在 PHPUnit 中使用数据提供程序运行单个测试

    使用命令行运行测试时遇到问题 如果我像这样运行 phpunit phpunit no configuration filter testAdd DataTest DataProviderTest php 效果很好 但是我们使用正则表达式来准
  • PHP函数返回值到html标签

    我想获取函数的返回值并将其显示到特定的id 在我的 Class php 中 我有一个名为 login 的函数 用于验证密码是否正确 不正确
  • 在 PHP 中使用数组来比较用户名/密码

    我有以下 php 脚本 其中有一个用户名和密码 Username user1 Password pass1 if isset POST submitform Clean up the input values foreach POST as
  • 我应该使用排队系统来处理付款吗?

    我在用着Slim https www slimframework com和这个结合Stripe 的 PHP 库 https stripe com docs api php在我的应用程序中处理付款 一切都很好 但是直到最近 我在我的系统中发现
  • 查询嵌套查询结果中两列的位置

    我正在编写这样的查询 select from myTable where X in select X from Y and XX in select X from Y X 列和 XX 列的值必须位于同一查询的结果中 select X fro
  • PHP:如何检查总数。 URL 中的参数?

    我正在使用 REQUEST 检索参数 有没有办法找到总数 URL 中的参数 而不是检索每个参数然后进行计数 这将为您提供总数 分隔的 URL 查询参数 count explode SERVER QUERY STRING 如果您只想要唯一的参
  • 在 LINQ 中执行 FirstOrDefault 的替代方法

    我有一个成员资格表 用于记录用户是否是列表的成员 当用户的成员资格发生更新时 会写入新记录 并且先前的记录保持原样 从而可以维护其成员资格的历史记录 要获取用户的会员身份 需要选择他们最近的条目 下面是一些用户列表成员资格数据的示例 目的是
  • 数据读取过程中遇到致命错误

    我正在进行定期更新表扫描 Using connect1 As New MySqlConnection ConnectLocalhost serverString connect1 Open Dim cmd New MySqlCommand
  • Heredoc:常用的“EOT”实际上是什么意思?

    PHP s 定界例子 http www php net manual en language types string php language types string syntax heredoc似乎总是使用 EOT 有时是 EOD 作
  • PHP 中的简单 JSON 请求

    我有以下 json country code latitude 45 9390 longitude 24 9811 zoom 6 address city country Romania country code RO region 我只想
  • 如何更改phpmyadmin MySQL的IP地址?

    我在 xampp 中更改了 apache 的 IP 地址 但无法连接到 MySQL 我认为问题是我的 apache 不在我的数据库的同一网络上 我的 apache 位于 192 168 1 10 而我的 MySQL 位于 127 0 0 1
  • Oracle SQL-根据记录的日期与历史记录标记记录

    这是我在论坛上的第一篇文章 通常我能够找到我需要的东西 但说实话 我不太确定如何针对该问题提出正确的问题 因此 如果论坛上已经有答案而我错过了 请接受我的歉意 我通过 Benthic Software 在 Oracle 数据库中运行以下代码

随机推荐

  • 将原始 HTTP 请求转换为 HTTPWebRequest 对象

    在 NET 中 是否可以将原始 HTTP 请求转换为 HTTPWebRequest 对象 我确信 NET 内部正在这样做 知道 NET 的哪一部分实际上在处理这个问题吗 我可以调用它吗 或者是否有任何允许原始 HTTP 连接的外部库 我不相
  • dart 中的转义“正则表达式”

    我正在尝试捕获 dart 正则表达式中的符号 我的正则表达式如下所示 RegExp containsSymbolRegExp RegExp r lt gt 但是 我还需要让它捕获符号 但我不能把 放在那里 因为它会弄乱字符串 有什么想法如何
  • 如何比较数组中的日期以找到最早的日期?

    我有一个名为 dateArray 的变量 其中包含日期 例如 09 09 2009 16 07 2010 29 01 2001 我想用 for 循环找到最早的一个 所以结果是 29 01 2001 or dateArray 2 语言是jav
  • 选择窗口无法选择子窗口

    在我的 Java 代码中 单击 编辑描述 链接后 将打开一个窗口 即 Java 脚本窗口 此处的图像第一个给出带有属性的锚标记 第二个打开窗口 Image 1 Image 2 Window image Along with Page Sou
  • 在Python中将字符串二维列表转换回二维列表[重复]

    这个问题在这里已经有答案了 我刚刚开始玩Python 我知道我们可以使用 str 将任何列表转换为字符串 喜欢 gt gt gt l 1 1 2 2 3 3 gt gt gt l 1 1 2 2 3 3 gt gt gt type l
  • 太多的回溯:为什么这里有“重做”?

    我正在 Prolog 中做一个非常简单的练习 但跟踪中有些东西我不明白 该程序是一个 大于 gt 对表示为后继的整数 greater than succ 0 greater than succ A succ B greater than A
  • 如何清除p:dataTable中的所有输入字段?

    我将 JSF 2 0 与 PrimeFaces 一起使用 我有一个
  • CSS 位置 - 顶部 100% 不等于底部 0

    我在分配时注意到了这一点fixed定位到 css3 动画的元素 即top 100 没有得到相同的效果bottom 0 它定位文档外部的元素 而bottom 0 仍然显示整个元素 JSFiddle演示 css位置有相反的吗top 0 这会自动
  • Yocto 中支持 PHP 的 Apache2

    我正在使用 Yocto 创建一个包含 apache2 的构建 但我很难添加 php 支持 我之前运行过它 阅读 去年 但从那时起 meta openembedded 中的meta webserver 层发生了变化 来自元网络服务器中的自述文
  • 将外部 javascript 导入到 google apps 脚本 [重复]

    这个问题在这里已经有答案了 我正在尝试从 Google 电子表格 Google 文档 使用 Trello 但不确定如何导入 引用 链接使用其库所需的 javascript 文件 我唯一的其他选择是直接使用他们的 REST API 很好 但我
  • 如何在Tensorflow中将字符串张量转换为Python字符串?

    以下代码是批量数据提供程序 mat文件 但运行时出现以下问题 TypeError expected str bytes or os PathLike object not FIFOQueue 代码是 import numpy as np i
  • 强制绑定DataGridView生成列和行

    我以编程方式创建一个 DataGridView 对象 然后使用网格的 DataSource 属性将其绑定到 DataTable 创建网格后 我将其添加到 WinForms 的控件集合中 即 Form1 Controls Add grid 我
  • 银行式导航限制

    某些网络应用程序 尤其是银行网站 会阻止您使用浏览器的导航按钮 在新选项卡中打开链接甚至刷新页面 通常他们会警告您不要这样做 甚至终止会话 迫使您再次登录 他们是否遵循特定的架构模式来实现这一目标 他们的目标是什么 这如何提高安全性 他们可
  • 桌面 SWING 应用程序上的 jpa

    我正在使用 SWING 开发一个单用户桌面应用程序 我对这种使用 java sql api 的应用程序有一点经验 并发现它一点也不舒服 在我的新应用程序中 我第一次尝试使用 JPA 我阅读了很多教程 这些教程使我几乎了解了我需要的所有内容
  • 无法启用spring框架的日志记录

    我想在Spring框架和Spring Security中配置日志记录 然后按照这个http docs spring io spring docs 3 2 x spring framework reference html overview
  • 自动布局以编程方式修改约束乘数

    如何以编程方式修改约束乘数 我设置了以下内容 self view addConstraint NSLayoutConstraint constraintWithItem button attribute NSLayoutAttributeW
  • 如何使用VC++更改桌面背景

    我目前正在尝试使用 SystemParametersInfo 更改桌面背景 当我输入我的内容时 vs 不会给我任何错误 但是当我运行程序时 我收到带有黄色三角形的警告 它说 KernelBase dll 抛出了某种异常 然后它说某些 PDB
  • 如何使用检测打印 Java 运行时调用的所有方法?

    我想打印出在运行时调用的所有方法 它们应该按照调用的顺序打印出来 如果多次调用它们 则应该打印多次 这可用于逆向工程 查看当您按下按钮或执行特定操作时调用哪些函数 我想为此使用 Java 代理和仪器 这可以使用 Java 代理和检测库来完成
  • 在 vbscript 中逐字节读取文件

    我正在寻找一种使用 VBScript 大 1 GB 读取大二进制文件的方法 我无法直接读取它ReadAll因为文件太大 所以我正在寻找一种在循环中读取它的方法 就像在 C 中一样 所以我想读取 X 个字节 处理它们 我不需要完整的文件来完成
  • MySQL单语句合并两个表

    我确信这个问题已经被问过 回答了 但我不知道这种操作是如何调用的 而且我的 SQL 知识是有限的 我正在寻找一个 SQL 语句来合并两个表 表用户 ID hash 1 abc 2 def 3 ghi 和 USER FIELD 表 ID us