【问题标题】:subquery mysql to get realted data from three tables子查询mysql从三个表中获取相关数据
【发布时间】:2014-02-22 17:48:47
【问题描述】:

我正在从 3 个表中获取相关数据。

useraccdetails 列中有带有订单ID 的用户帐户交易。这是在 details 列中查找“gift%”的查询的基本表...

"SELECT * FROM `useracc` WHERE `details` LIKE 'gift%' ORDER BY `id` DESC"

现在我想从details 列中的这些结果中获取订单 ID,该列以“礼品订单 ID:245”的形式给出。我想要这个 245 并运行另一个查询以在第二个表中查找 245,即transaction。 我想在表transaction 中获取列senderemail,其中orderid 列是245。假设这返回abc@abc.com

现在在第三个表中,即users 我想找到与该电子邮件相关的用户名。 我想运行查询以获取表users 中的列username,其中useremail 是abc@abc.com。

此用户名将显示在包含我们第一个查询结果的表格格式的每一行中

如何使用子查询来做到这一点。请帮忙

【问题讨论】:

  • 为什么是子查询而不是联接?
  • 我也可以使用join。你能举个例子吗?谢谢

标签: mysql subquery


【解决方案1】:
SELECT u.username, ua.*
FROM useracc AS ua
JOIN transaction AS t ON ua.details = CONCAT('gift order id:', t.id)
JOIN users AS u ON u.useremail = t.senderemail
WHERE ua.details LIKE 'gift order id:%'
ORDER BY ua.id DESC

WHERE 子句并不是绝对必要的,因为它与 ON 条件是多余的。但它可能会加快查询速度——无论有无尝试,看看哪个更快。

【讨论】:

  • @ 之后使用用户名补全,这样您就可以正确拼写名称。
猜你喜欢
  • 2014-01-23
  • 1970-01-01
  • 1970-01-01
  • 2020-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多