php - 如何从 MySQL 表中正确获取结果

标签 php mysql

这是我的产品表

enter image description here

我想获得所有产品,其中 product_sizes in (Xl, M)

我正在尝试这段代码

SELECT `id`,`name`,`sell_price`,`product_sizes`,`product_colors`
FROM `view_product_listing` 
WHERE `product_sizes` in ('XL', 'M')

返回给我 productId 15 和 16 但我想要 productId 4,14,15,16

最佳答案

您应该认真避免将大小存储为 CSV(逗号分隔)数据,请参阅下面的替代表格设计。作为解决方法,我们可以使用 FIND_IN_SET:

SELECT id, name, sell_price, product_sizes, product_colors
FROM view_product_listing
WHERE FIND_IN_SET('M', product_sizes) > 0 OR FIND_IN_SET('XL', product_sizes) > 0;

但请注意,更好的数据库设计是为产品、尺码和颜色设置一个单独的表:(省略颜色)

products
id | name                                 | sell_price |
4  | Women Maxi White Dress               | 550.00     |
14 | Women Maxi Blue Dress                | 700.00     |
15 | Women Fit and Flare Multicolor Dress | 750.00     |
16 | Floral Print Straight Kurta          | 699.00     |

sizes
product_id | product_size
4          | XL
4          | M
14         | XL
14         | XXL
14         | L
14         | M
15         | XL
16         | M

现在我们可以使用直接连接来查找所有产品及其元数据,这些产品具有中号或 XL 号:

SELECT
    p.id,
    p.name,
    p.sell_price,
    s.product_size
FROM products p
INNER JOIN sizes s
    ON p.id = s.product_id
WHERE
    s.product_size IN ('M', 'XL');

关于php - 如何从 MySQL 表中正确获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55741316/

相关文章:

php - Wordpress 查询运行两次

php - 需要 php 表单来命名哪些必填字段尚未填写

mysql - 将一列的结果附加到另一列的结果中

php - 对使用 proc_open 打开的进程进行多次写入

php - 为什么在 dockerfile 中运行的 composer install 命令中看不到卷目录中的 composer.json 文件?

mysql - 两个表匹配的 SQL 查询速度更快

php - 在php/mysql中插入数组数据

MySQL 添加每个 ID 的行号

php - 我怎样才能消除这个典型的 laravel 5 案例中的重复查询(验证和 Controller )?

mysql - 如何在酒店预订系统中准确获取取消预订房间的mysql查询?