MySQL 查询一对多关系且仅返回一行

标签 mysql sql

情况
我有一个用于存储产品的表 userproducts ,还有一个用于存储产品的所有竞争对手的表 offers 。另外,我还有另一个名为 sellers 的表,它存储有关卖家/竞争对手的信息。

我想要什么
我现在希望可以搜索我的产品,并获取最低价格的信息以及该竞争对手的名称

我有什么
到目前为止,我可以说它会给我最低价格和一个 asin(=产品)的名称。在这里。

SELECT (o.price+o.shipping) AS lowest_price,
       s.seller_name AS seller_name
  FROM offers AS o
       LEFT JOIN sellers AS s
            ON (o.userinfos_id = s.userinfos_id 
                AND o.marketplace_id = s.marketplace_id 
                AND o.merchant_id = s.seller_id)
 WHERE o.userinfos_id = ? 
       AND o.marketplace_id = ? 
       AND o.asin = ? 
       AND o.merchant_id != ?
 ORDER BY 
       (o.price+o.shipping) ASC
 LIMIT 1) 

如果您在此处发现任何性能泄漏,请随时报告

缺少什么
但缺少的是我如何才能为我所有的人获取这些信息。不只是为了一个人。我看不到缺失的链接。我尝试了一个解决方案,将其设置为子查询并将其放入 SELECT 中,如下所示:

SELECT userproducts.*, 
       ( "HERE the query from the top ) 
  FROM userproducts 
 WHERE ...

但结果却是 MySQL 回复了我这个错误消息

SQLSTATE[21000]: Cardinality violation: 1241 Operand should contain 1 column(s)

我只想搜索我的产品,mysql 应该还给我返回有关lowest_price 的信息。你能帮我完成查询吗?

最佳答案

SELECT userproducts.*, 
       topQuery.*
  FROM userproducts, 
       ( "HERE the query from the top ) topQuery
 WHERE ..

关于MySQL 查询一对多关系且仅返回一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22062211/

相关文章:

mysql - 如何在SQL中的三个或更多表之间进行Group By

sql - 为什么 'IS NULL' 在 blob 列上比 'length() = 0' 慢 100 倍?

javascript - 立方体 Js |计算 2 个日期之间的差异

php - 如何在查询结果中显示多个结果?

database-design - 哪种MySQL表类型适合在线图书馆和评论?

mysql - SQL 查询比较十进制值不匹配并返回 NULL 值

java - MySQL 添加条件逻辑并组合 SELECT

mysql - 显示某些值 mySQL

sql - 合并条件不同的查询

mysql - 获取自上次插入行以来的分钟数