我有一个MySQL数据库供投资者跟踪他的投资:
我想编写一个查询,允许用户从“更新”中选择所有更新。在特定的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的所有更新,即使在一个投资名称下进行了多次更新。
有什么建议?谢谢!
答案 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)
上的索引。
?
表示运行时传递给查询的参数。确切的语法取决于您如何进行呼叫。