2014-09-06 84 views
0

在MySQL中,如果設置了外鍵,如何從另一個表中選擇?有條件地從MySQL中的一個表或另一個表中選擇

我試圖做的是選擇Fields.value如果Fields.value_id沒有設置,否則從Values其中Value.id等於Fields.value_id選擇Values.value

我的表:

Fields:

id | value | value_id

Values:

id | value

出了什麼問題我在這裏的代碼?

代碼:

SELECT CASE WHEN Field.value_id = NULL OR Field.value_id = "" THEN Field.value ELSE Value.value FROM values as Value WHERE (Field.value_id = Value.id)

回答

2

一個語法錯誤是你缺少的caseend。我也認爲你想要在表格之間進行左連接。我最好的猜測給出的可用信息是這樣的:

SELECT (CASE WHEN f.value_id = NULL OR f.value_id = '' 
      THEN f.value 
      ELSE v.value 
     END) 
FROM fields f left join 
    values v 
    on f.value_id = v.id; 
+0

嗯,這仍然是拋出語法錯誤。我不小心在我的原始文章('fieldtype'而不是'field')中輸入了錯字 - 我更新了更正和表格結構。 – schnauss 2014-09-06 01:56:41

+0

啊,非常有趣。如果我稍微調整一下,並將其指向一個以相同方式鏈接的不同表格,我會得到一個'Cardinality Error'。 MySQL中的Value或Values是限制詞嗎? – schnauss 2014-09-06 03:29:19

+0

@schnauss。 。 。 'values'是一個保留字。我沒有打擾它逃脫,因爲你在你的問題中使用了這個名字。 (保留字列表在這裏:http://dev.mysql.com/doc/refman/5.7/en/reserved-words.html)。 – 2014-09-06 14:35:38

相關問題