如何在关联查询中仅获取productId对应的单条数据?
解决方法
以下几种方式都能实现只返回指定productId的单条数据:
方法1:添加WHERE条件+DISTINCT去重
如果只需要Product表的唯一数据,用DISTINCT过滤掉重复的Product记录:
SELECT DISTINCT Product.* FROM Product INNER JOIN OrderItems ON Product.productId = OrderItems.productId WHERE Product.productId = 3;
方法2:添加WHERE条件+GROUP BY分组
通过分组Product的productId,确保每个productId只返回一条:
SELECT Product.* FROM Product INNER JOIN OrderItems ON Product.productId = OrderItems.productId WHERE Product.productId = 3 GROUP BY Product.productId;
注意:若使用MySQL的ONLY_FULL_GROUP_BY模式,需保证SELECT的字段都在GROUP BY中或是聚合函数,因此只选取Product表字段更稳妥。
方法3:添加WHERE条件+LIMIT限制条数
如果只需要任意一条关联后的记录,直接用LIMIT 1限制返回条数:
SELECT * FROM Product INNER JOIN OrderItems ON Product.productId = OrderItems.productId WHERE Product.productId = 3 LIMIT 1;
方法4:子查询获取单条Product数据再关联
先获取指定的Product记录,再关联OrderItems(若需要OrderItems的特定数据,可结合聚合函数):
SELECT p.*, oi.orderItemId -- 按需选择OrderItems字段 FROM (SELECT * FROM Product WHERE productId = 3 LIMIT 1) p INNER JOIN OrderItems oi ON p.productId = oi.productId LIMIT 1;
内容的提问来源于stack exchange,提问作者Dugong98
相关产品推荐
相关产品推荐

