首页 > 解决方案 > 根据外键关系查询输出结果

问题描述

我在 MySQL 中有以下 2 个表: products (id(int), title(varchar), description(varchar), add_date(datetime)), images (id(int), product_id(int), image_file(varchar), main_image (二进制),date_add(日期时间))。列main_image只有一个产品图像的值为 1,其余为 0。由于代码中的错误,在表中添加的一些图像没有main_image = 1。我需要解决这个问题。如何选择没有一个main_image = 1的所有产品

标签: mysql

解决方案


您可以取每个产品MAX的所有值中的main_image,只选择那些 aMAX等于 0 的产品(即没有值为1):

SELECT product_id
FROM images
GROUP BY product_id
HAVING MAX(main_image) = 0

如果需要,您可以将其用作子查询并将JOIN其用于产品表(或在IN表达式中使用)以获取这些产品的详细信息,例如

SELECT *
FROM products 
WHERE id IN (SELECT product_id
             FROM images
             GROUP BY product_id
             HAVING MAX(main_image) = 0)

推荐阅读