【发布时间】:2020-11-05 01:30:33
【问题描述】:
我想在 products 表中加入来自 daily_discounts.discount_product 表限制 1 的最后插入的逗号分隔值。有可能在一个查询中实现这一点吗?
试过了:
SELECT * FROM `daily_discounts` INNER JOIN products WHERE FIND_IN_SET(products.product_id , daily_discounts.discount_products)
SELECT * FROM `daily_discounts` INNER JOIN products ON FIND_IN_SET(products.product_id , daily_discounts.discount_products) LIMIT 1
表daily_discounts:
+-------------+---------------------+
| discount_id | discount_products |
+-------------+---------------------+
| 1 | 960,310,165,702 |
+-------------+---------------------+
| 2 | 231,822,379,420 |
+-------------+---------------------+
| 3 | 518,56,803,858 |
+-------------+---------------------+
想要的表格产品结果:
+------------+--------------------+
| product_id | product_sale_price |
+------------+--------------------+
| 518 | 10.25 |
+------------+--------------------+
| 56 | 11.24 |
+------------+--------------------+
| 803 | 5.55 |
+------------+--------------------+
| 858 | 13.52 |
+------------+--------------------+
为了工作,我使用了两个查询 首先,我选择 daily_discounts 表中最后插入的记录:
select `discount_products` from `daily_discounts` order by `discount_id` desc limit 1
第二我选择产品表
select `product_id`, `product_sale_price from `products` where `product_id` in (518, 56, 803, 858) order by `product_id` desc)
【问题讨论】:
-
修复你的数据模型!不要将数字存储为字符串!不要在一个字符串中存储多个值!声明外键关系!