从条件中选择同一个表中的两行

时间:2011-04-21 17:58:47

标签: php mysql database

我有一个任务是从名为food的mysql表中获取两行。

现在,我有一个carbon_footprint列,其中包含所有食物的碳足迹。我现在必须从mysql表中随机选择两行,但只有一个条件。

这两个值的碳足迹百分比差异应大于等于70%。

我现在能做的最好的事情是:

Select a.* from foods a CROSS JOIN foods b on ((a.co2 - b.co2)/b.co2) >= 0.7 ORDER BY RAND() LIMIT 2

但不知何故,我得不到正确答案。我知道我错过了一些非常愚蠢的东西。

请帮忙!

1 个答案:

答案 0 :(得分:0)

我在db表中使用以下值测试了下面的函数: DataTable1

在没有LIMIT或ROUND()的情况下运行Inner查询。

SELECT
              FoodName1 = A.FoodName
            , Food1Co2 = A.co2
            , FoodName2 = B.FoodName
            , Food2Co2 = B.co2
            , Number = ABS(((A.co2 - B.co2)/(A.co2)))
      FROM TB as A 
      CROSS JOIN TB B

DataTableResults

最后查询全部是:

SELECT * , ABS(((tt.Food1Co2 - tt.Food2Co2)/(tt.Food1Co2)))
FROM (
    Select
              FoodName1 = A.FoodName
            , Food1Co2 = A.co2
            , FoodName2 = B.FoodName
            , Food2Co2 = B.co2
            , Number = ABS(((A.co2 - B.co2)/(A.co2)))
      FROM TB as A 
      CROSS JOIN TB B 
) tt
WHERE ABS(((tt.Food1Co2 - tt.Food2Co2)/(tt.Food1Co2))) >= 0.7
ORDER BY RAND() LIMIT 2

注意我是如何将ABS()添加到您的函数中的,因为您的查询将显示负数,因此您需要删除底片并将所有内容转为正数,然后执行RAND()LIMIT。希望这会有所帮助。