【问题标题】:How to query a MySql table with a where clause from another table?如何从另一个表中查询带有 where 子句的 MySql 表?
【发布时间】:2020-09-18 08:48:05
【问题描述】:

我在 MySql 数据库中有两张表,一张称为销售,一张称为拍卖。 sales 表有一个auction_id 列。我想提取仅以欧元进行的销售,但货币是拍卖表中的一列。我应该运行什么查询来实现这一点?非常感谢

【问题讨论】:

  • 到目前为止你尝试过什么?你被困在哪里了?为什么不使用JOIN
  • 我已尝试在货币为“eur”的货币上选择 sale_price 从销售 INNER JOIN 拍卖;。我对 MySql 很陌生,所以我不完全知道自己在做什么。
  • 请通过编辑将所有尝试添加到您的问题中,以及表格结构、示例输入数据以及该示例数据的预期输出
  • 抱歉,已经回复了,下次再回复。

标签: mysql join datatables


【解决方案1】:

您可以使用内部查询来做到这一点

select * 
from sales 
where auction_id in (select id from auctions where currency='EUR');

它会做什么

  • 首先它将运行内部查询并选择所有具有货币 EUR 的 ID。
  • 之后会检查sales是否包含从内部查询中选择的auction_id

其他选项也可以使用加入

SELECT * 
FROM sales, auctions 
WHERE sales.auction_id = auctions.id AND auctions.currency='EUR'

SELECT * 
FROM sales 
JOIN auctions ON sales.auction_id = auctions.id AND auctions.currency='EUR'

【讨论】:

  • 非常感谢您的回答,我从中学到了很多。
  • 只有最后一个版本是安全的(但你忘记了 WHERE)。在没有 JOIN 替代方案之前,请勿使用 WHERE IN 和/或逗号分隔的笛卡尔坐标。
  • 感谢 @Akina 在我开始学习时更新我的​​知识,我犯了同样的错误,但现在我已经用 JOIN 改变了。
  • where auctions.currency='EUR' 添加到最后 2 个查询中。
  • 非常感谢,我将使用最后两个查询。
猜你喜欢
  • 1970-01-01
  • 2017-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-04
  • 1970-01-01
  • 2023-01-31
  • 2018-04-10
相关资源
最近更新 更多