2012-09-15 66 views
3

所以我有一個表,看起來像這樣:獲取基於關閉的第一條記錄行值

field_value  field_label  record_id  data_element  data_id 
        8-7-1966    8   immunization   163 
    8-7-1966   1966-8-7   163   immunizDate   164 
             163   immunizProvider  165 

我需要抓住所有這三個記錄,動態。我可以通過執行獲得的第一條記錄:

SELECT 
    field_value, field_label, record_id, data_element, data_id 
FROM 
    substance_data 
WHERE 
record_id = 8 

但我需要以某種方式搶在對方兩個記錄,知道他們的RECORD_ID將等於第一個記錄了Data_ID。

回答

2
SELECT 
    field_value, field_label, record_id, data_element, data_id 
FROM substance_data 
WHERE 
    record_id = 8 
OR record_id IN (SELECT DISTINCT 
         data_id 
        FROM 
         substance_data 
        WHERE 
         record_id = 8 
       ) 
+0

我想知道是否有可能用一個SQL語句遞歸地獲取整條記錄鏈。即使用'record_id = 8'得到記錄,並且所有具有'record_id'的記錄等於任何先前選擇的記錄的'data_id'。 – petersohn

+1

@petersohn:可以用遞歸CTE查詢。壞消息是mysql沒有遞歸CTE。 – wildplasser

+0

這個解決方案非常完美。如果沒有太多的麻煩,是否有辦法抓住它所說的record_id = 8,並保留它。例如,我推這到一個數組,並使用record_id作爲存儲指標,有沒有辦法抓住第一個records_id,並將其傳遞出sql查詢? –

相關問題