我想在兩種不同情況下返回每條記錄的最新(dateCreated desc)。在一種情況下基於特定列上的不同結果返回
這可能不可能,但我想我會在這裏接觸。 1)如果記錄在parentId列中有一個值,那麼我想用相同的parentId搜索所有的記錄,並在結果中只包含最近的那個記錄(dateCreated desc)。
我知道該怎麼做瓦特/這樣的查詢:
select distinct(parentId) from table order by dateCreated desc
但我不知道如何實現這一目標而努力考慮到這兩種情況。 2)如果記錄不包含parentId,並且該記錄的ID不在其他記錄的parentId中,則將其包含在結果中。
我知道我能得到的所有結果,然後以編程環通它像這樣:
for($i<0; $i<count($results); $i++)
{
if ($results[$i]['parentId'])
{
$parentId = $results[$i]['parentId'];
$parentDateCreated = $results[$i]['dateCreated'];
for($k=0; $k<count($results); $k++)
{
if($results[$k]['parentId'] = $parentId)
{
if ($results[$i]['dateCreated'] < $results[$k]['dateCreated'])
{
$data[$parentId] = $results[$i];
}
}
}
}
}
可能效率不高,不知道它的工作原理,但想給什麼,我需要完成一個想法,如果它在parentId中有一個值(它需要與具有相同parentId的所有其他記錄進行比較),或者如果該記錄不包含parentId,則需要查找最新記錄,然後只包含在結果中也是如此。
我用一個基本查詢創建了sql提琴。 http://sqlfiddle.com/#!9/69544/1
的樣本數據:
id parentId dateCreated
-- -------- -------------------
1 null 2016-04-10 20:00:00
2 1 2016-04-12 12:00:00
3 1 2016-04-13 10:00:00
4 null 2016-04-15 14:33:00
預期成果(我就回到我期待的結果的ID):
3和4
ID 3,因爲它發現parentId爲1,並且由於dateCreated更近,所以找到id 3中最近的一個。
id 4,因爲它沒有parentId,也沒有4出現在任何其他記錄的parentId列中。
你的第一個查詢將無法工作。樣本數據和期望的結果將真正幫助解釋您想要完成的任務。 –
你的小提琴不是很有幫助,因爲你沒有多個記錄具有相同的parentID – Barmar