Mysql sql查询未在表中返回非唯一值
我有一个MySQL数据库供投资者跟踪其投资:Mysql sql查询未在表中返回非唯一值,mysql,sql,Mysql,Sql,我有一个MySQL数据库供投资者跟踪其投资: “交易”表包含有关投资的信息,包括投资的不同类别(资产类别) 另一个表(“更新”)跟踪特定投资的更新(投资名称、日期和大量财务详细信息) 我想编写一个查询,允许用户从特定资产类别下的“更新”中选择所有更新。然而,如上所述,资产类别在投资表中。我编写了以下查询: SELECT * FROM updates WHERE updates.invest_name IN (SELECT deal.deal_name
- “交易”表包含有关投资的信息,包括投资的不同类别(资产类别)李>
- 另一个表(“更新”)跟踪特定投资的更新(投资名称、日期和大量财务详细信息)
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控制台中尝试了这两种方法,但是我仍然没有从更新表中获得所有结果。我拍了一张截图,但我看不出必须把它贴在这里。谢谢