2012-07-25 84 views
1

好吧,這有點棘手,但基本上在我的SQL語句中,比較每行中字段之間的價格以獲得返回的最低值,現在問題是每個值都有一個鏈接。mysql根據最小值返回正確的鏈接

有沒有辦法根據SQL語句中的最低值返回正確的鏈接?

下面是我的SQL語句。

SELECT 
    title, 
    my_value, 
    my_ink, 

    LEAST(site_a_value, site_b_value, site_c_value) AS lowest_value, 

    site_a_link, 
    site_b_link, 
    site_c_link 

    FROM STOCK 

例如,如果site_b有最低值,我只想要返回site_b_link。

+2

ü可以從數據庫中清晰的認識提供的樣本數據? – Makesh 2012-07-25 14:59:27

+1

你能告訴我們一些樣品數據嗎? – Kevin 2012-07-25 14:59:30

+0

肯定跟我在一起 – 2012-07-25 15:00:51

回答

4

嘗試

SELECT  title, 
      my_value, 
      my_ink, 
      LEAST(site_a_value, site_b_value, site_c_value) AS lowest_value,  
      case LEAST(site_a_value, site_b_value, site_c_value) 
      when site_a_value then site_a_link 
      when site_b_value then site_b_link 
      when site_c_value then site_c_link end AS lowest_value_link, 
FROM STOCK 
+0

看起來不錯我會試一試 – 2012-07-25 15:01:53

+0

在最後一行改變了一個小錯誤。只要記住,如果有相同的值mysql case選擇第一個找到。 – 2012-07-25 15:03:55

+0

什麼會將'end'添加到語句原因? – 2012-07-25 15:05:14

1

試試這個:

SELECT 
    title, my_value, my_ink, 

    LEAST(site_a_value, site_b_value, site_c_value) AS lowest_value, 

    (
    CASE site_a_value = LEAST(site_a_value, site_b_value, site_c_value) 
    THEN site_a_link 
    ELSE CASE site_b_value = LEAST(site_a_value, site_b_value, site_c_value) 
    THEN site_b_link 
    ELSE 
    site_c_link 
) AS site_link 

FROM STOCK