繁体   English   中英

sql查询不返回表中的非唯一值

[英]sql query not returning non-unique value in table

我有一个MySQL数据库供投资者跟踪他的投资:

  • “交易”表中包含有关投资的信息,包括投资的不同类别(asset_class)。
  • 另一个表格(“更新”)跟踪特定投资(投资名称,日期和许多财务详细信息)的更新。

我想编写一个查询,允许用户从特定asset_class下的“更新”中选择所有更新。 但是,如上所述,asset_class在投资表中。 我写了以下查询:

SELECT *
FROM updates
WHERE updates.invest_name IN (SELECT deal.deal_name
                              FROM deal
                              WHERE deal.asset_class = '$asset_class'
                             ); 

我正在使用PHP,因此$asset_class$asset_class的选定变量。 但是,该查询仅返回唯一的更新名称,但是我希望查看给定asset_class的所有更新,即使在一个投资名称下进行了多个更新也是如此。 有什么建议吗? 谢谢!

您的查询应该按照您的意图进行。 但是,一般而言,此类查询将使用JOIN编写。 更重要的是,使用参数占位符而不是查询字符串:

SELECT u.*
FROM updates u JOIN
     deal d
     ON u.invest_name = d.deal_name
WHERE d.asset_class = ?;

这可以利用deal(asset_class, deal_name)updates(invest_name)上的索引。

? 表示您在运行查询时传递给查询的参数。 确切的语法取决于您如何进行呼叫。

暂无
暂无

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

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