某些在mysql命令行客户端中运行正常的查询似乎没有返回 phpMyAdmin中的任何内容(没有错误,没有结果)。 我得到的印象与嵌套查询有关。 这是一个例子:
select * from
(select
(select min(data) from census2 where
census2.monkey=samplecollection.monkeyid and
date(collectiontime)=date(census2.timestamp)) census
from samplecollection,biograph,hormone,plate
where plate.hormone='Testosterone' and hormone.plateid=plate.plateid and
not specialcontentcode like '%UR%' and thermos!='F' and
biograph.id=monkeyid and samplecollection.sampleid=hormone.sampleid)
t1 limit 3;
+--------+
| census |
+--------+
| GFF |
| GRF |
| GRF |
+--------+
3 rows in set (5.09 sec)
如果我提取内部查询(并对其设置限制),那么我得到一个结果。
答案 0 :(得分:0)
您的查询结构过于复杂且未明确优化,可能会导致您已解决的问题。
这是一个带有一些重构的查询:
SELECT *
FROM samplecollection SC
INNER JOIN (SELECT C2.monkeyid
,MIN(C2.data) AS [census]
FROM census2 C2
INNER JOIN samplecollection SC2 ON SC2.monkeyid = C2.monkey
AND DATE(SC2.collectiontime) = DATE(C2.timestamp)
AND SC2.thermos != 'F'
AND SC2.specialcontentcode NOT LIKE '%UR%'
GROUP BY C2.monkeyid) T ON T.monkeyid = SC.monkeyid
INNER JOIN biograph B ON B.id = SC.monkeyid
INNER JOIN hormone H ON H.sampleid = SC.sampleid
INNER JOIN plate P ON P.plateid = H.plateid
AND P.hormone = 'Testosterone'
LIMIT 3
答案来得晚,但是对于某些人来说,在使用JOIN
子句时可以看看如何简化一些非常复杂的查询结构可能会很有用。
希望这会有所帮助。