Mysql排序BY填充列数

时间:2016-08-01 12:12:35

标签: php mysql

我正在比较3不同网站的产品价格。所以我有3不同的价格。如果网站不提供该产品,其价格为空。

MySQL看起来像这样:

**id | name | price_1 | price_2 | price 3**

我想从所有3个网站上提供的产品中对其进行排序。对于仅在一个网站上提供的产品。

我无法弄清楚如何处理这个问题!

2 个答案:

答案 0 :(得分:0)

如果空字段具有NULL值,则可以使用

SELECT * FROM sometable ORDER BY ISNULL(price_1) + ISNULL(price_2) + ISNULL(price_3) DESC;

但更明智的解决方案是:

  • 您有一个包含产品的表
  • 你还有另一个 表,其中包含产品的ID,价格和价值 表示哪个网站提供了该价格。

优点:

  • 您只需要COUNT(*)第二个表中产品的条目,以了解列出的产品数量
  • 您可以随时更改网站数量而无需更改表格

答案 1 :(得分:0)

试试这个:

SELECT *, (IF(price_1 IS NULL,0,1) + IF(price_2 IS NULL,0,1) + IF(price_3 IS NULL,0,1))  AS odr FROM `test1` ORDER BY odr DESC