我有 2 个表:1) products 2) product_images,它的数据是这样的:
products table :
==============
ProductID Title model_number
-----------------------------------
1 title1 123
2 title2 124
3 title3 125
4 title4 126
5 title5 127
product_images
==============
pi_id p_id product_image
------------------------------
1 1 image1
2 2 image2
3 3 image3
4 4 image4
5 1 image1
因此,如果我运行此查询,它会返回 5 行,这是正确的:
$q=mysqli_query($conn, "SELECT * FROM products");
echo $n=mysqli_num_rows($q); // return 5 rows
但是如果我运行这个查询,它会返回 6 行,为什么?它应该显示 5 行!
$searchQuery = mysqli_query($conn, "SELECT products.ProductID,
products.Title, products.model_number, product_images.product_image FROM
products LEFT JOIN product_images ON products.ProductID =
product_images.p_id ");
$isExist = mysqli_num_rows($searchQuery); // return 6 rows
你能告诉我为什么它会再返回 1 行吗?我该如何解决?谢谢你。
实际上我想用适当的图片展示所有产品。
最佳答案
您已经使用了LEFT JOIN .并且您有两条 p_id=1
的记录;所以你有 6 行。
如果你想让p_id
唯一,那么使用GROUP_BY在您的查询中。
按如下方式编写您的查询:-
SELECT products.ProductID,
products.Title, products.model_number, product_images.product_image FROM
products LEFT JOIN product_images ON products.ProductID =
product_images.p_id GROUP BY product_images.p_id;
希望对你有帮助:)
关于php - 为什么 mysqli left join 返回 1 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35267519/