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

时间:2018-05-27 14:40:51

标签: mysql sql

我有一个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的所有更新,即使在一个投资名称下进行了多次更新。 有什么建议?谢谢!

1 个答案:

答案 0 :(得分:2)

您的查询应该按照您的意图执行。但是,一般而言,此类查询将使用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)上的索引。

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