MySql:创建一个有效的计算列

时间:2016-08-12 14:00:44

标签: mysql

我有一个已经很大的查询来选择产品信息。一切都很好,直到我尝试创建一个计算列。

这个想法是产品表包含价格列,但在提交价格变更之前我创建了一个new_price列,如此

CASE
WHEN id = 1 THEN (value from $newPrice array)
WHEN id = 2 THEN (value from $newPrice array)
...(ect sql statement continues to be generated from array)...
ELSE NULL END AS new_price

使用一个小的newPrice数组时一切都很好但是当它包含1,000 +值时,CASE语句变得非常大,查询需要很长时间。

是否有更好的方法可以在不设置临时new_price数据的情况下执行此操作,同时仍然创建new_price列以进行排序?

提前致谢。

2 个答案:

答案 0 :(得分:0)

您可以将所有$newPrice值加入逗号分隔的字符串,然后使用SUBSTRING_INDEX访问其中的特定值。

$newPrices = implode(',', $newPrice);

...

SUBSTRING_INDEX(SUBSTRING_INDEX('$newPrices', ',', id), ',', -1) AS new_price

另一种解决方案是将所有新价格插入临时表中,然后加入它。

答案 1 :(得分:0)