我在php文件中有一个MySQL查询。我想使用'ORDER by value ASC'从其中一个表的一列中的值升序对结果进行排序。但是,当前查询所产生的结果不是按此值排序,而是按表中的另一个值排序。我想这是因为我的语法错误,但是我无法解决。我一直在努力解决这个问题,但没有任何乐趣,有人可以帮忙吗?
非常感谢您的任何答复。
查询:
$Find_Query3 = mysql_query("SELECT
patients.*,
addobs.*,
DATE_FORMAT(addobs.datetime, '%d/%m/%Y %H:%i:%s') as dti1,
(SELECT DATE_FORMAT(MIN(addobs.datetime), '%m/%d/%Y %H:%i:%s') FROM addobs WHERE addobs.mrn = patients.mrn AND addobs.datetime >= lastOkPar.lastDatetime AND addobs.par >= $par AND addobs.hidden != 'yes') as dti2
FROM addobs
INNER JOIN patients ON addobs.MRN = patients.MRN
LEFT JOIN (
SELECT
addobs.MRN
, MAX(addobs.datetime) as lastDatetime
FROM addobs
WHERE
addobs.par < $par
AND addobs.hidden != 'yes'
GROUP BY addobs.MRN
) lastOkPar ON lastOkPar.MRN = addobs.MRN
WHERE
addobs.datetime = (SELECT MAX(OLAST.datetime) FROM addobs AS OLAST WHERE OLAST.MRN = patients.MRN)
AND addobs.par >= $par
AND NOT addobs.hidden = 'yes'
AND COALESCE(patients.ward,'') != 'dc'
ORDER by addobs.par ASC, dti2 ASC
PS当前,结果按出生日期排序,这是“患者”的其中一列。我不知道为什么它选择按此排序。我确定有逻辑,但我没有解决!
谢谢,
马特
最佳答案
尝试这个
ORDER by addobs.par ,
(SELECT DATE_FORMAT(MIN(addobs.datetime), '%m/%d/%Y %H:%i:%s') FROM addobs WHERE addobs.mrn = patients.mrn AND addobs.datetime >= lastOkPar.lastDatetime AND addobs.par >= $par AND addobs.hidden != 'yes')