Mysql sql查询未在表中返回非唯一值

Mysql sql查询未在表中返回非唯一值,mysql,sql,Mysql,Sql,我有一个MySQL数据库供投资者跟踪其投资: “交易”表包含有关投资的信息,包括投资的不同类别(资产类别) 另一个表(“更新”)跟踪特定投资的更新(投资名称、日期和大量财务详细信息) 我想编写一个查询,允许用户从特定资产类别下的“更新”中选择所有更新。然而,如上所述,资产类别在投资表中。我编写了以下查询: SELECT * FROM updates WHERE updates.invest_name IN (SELECT deal.deal_name

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

  • “交易”表包含有关投资的信息,包括投资的不同类别(资产类别)
  • 另一个表(“更新”)跟踪特定投资的更新(投资名称、日期和大量财务详细信息)
我想编写一个查询,允许用户从特定资产类别下的“更新”中选择所有更新。然而,如上所述,资产类别在投资表中。我编写了以下查询:

SELECT *
FROM updates
WHERE updates.invest_name IN (SELECT deal.deal_name
                              FROM deal
                              WHERE deal.asset_class = '$asset_class'
                             ); 
我使用的是PHP,因此,
$asset\u class
是asset\u class的选定变量。 但是,查询只返回唯一的更新名称,但我希望看到给定资产类的所有更新,即使在一个投资名称下进行了多个更新。
有什么建议吗?谢谢

您的查询应该符合您的意愿。不过,一般来说,这种类型的查询将使用
JOIN
编写。更重要的是,请使用参数占位符,而不是模糊不清的查询字符串:

SELECT u.*
FROM updates u JOIN
     deal d
     ON u.invest_name = d.deal_name
WHERE d.asset_class = ?;
这可以利用
交易(资产类,交易名称)
更新(投资名称)
上的索引


表示运行查询时传递到查询中的参数。确切的语法取决于您如何拨打电话。

您的查询应该按照您的意愿进行。不过,一般来说,这种类型的查询将使用
JOIN
编写。更重要的是,请使用参数占位符,而不是模糊不清的查询字符串:

SELECT u.*
FROM updates u JOIN
     deal d
     ON u.invest_name = d.deal_name
WHERE d.asset_class = ?;
这可以利用
交易(资产类,交易名称)
更新(投资名称)
上的索引


表示运行查询时传递到查询中的参数。确切的语法取决于您如何拨打电话。

您的查询正在按您的意愿进行。如果您对结果有问题,可能是PHP代码中的问题。您可以添加示例数据/所需结果(或使用此信息询问其他问题)。您的查询正在按您的意愿进行。如果您对结果有问题,可能是PHP代码中的问题。您可以添加示例数据/所需结果(或使用此信息询问其他问题)。您好,我在MySQL控制台中尝试了这两种方法,但仍然无法从更新表中获得所有结果。我拍了一张截图,但我看不出必须把它贴在这里。谢谢您好,我在MySQL控制台中尝试了这两种方法,但是我仍然没有从更新表中获得所有结果。我拍了一张截图,但我看不出必须把它贴在这里。谢谢