2011-12-04 9 views
0

私はこのクエリにマッチするmysqlの12行を持っていますが、最新の日付の行を調べ、その日付(timeStamp)だけを取得したいだけです。 "LIMIT 1"(そして "LIMIT 0、1"を試しました)を設定したにもかかわらず、すべての行を調べて、各行のtimeStampを引きます。ここで行を検査するときにLIMIT 1でMySQLが停止しないのはなぜですか?

$result = mysql_query("SELECT timeStamp FROM postings WHERE city='$city' and STR_TO_DATE('$date', '%a, %d %M %Y') > timeStamp LIMIT 1"); 
while($row = mysql_fetch_array($result)) { 
$mysqldate = $row['timeStamp']; 

$mysqldate = strtotime($mysqldate); 
$mysqldate = date('Y-m-d', $mysqldate); 
$date = strtotime($date); 
$date = date('Y-m-d', $date); 

echo "mysql date is ".$mysqldate. " and date is ".$date; 
echo '<br>'; 
if ($mysqldate > $date) { 
echo "mysql date is greater"; 
} 
} 

はそれが与えて出力です:

mysql date is 2011-11-27 and date is 2011-12-01 
mysql date is 2011-11-27 and date is 2011-11-29 
mysql date is 2011-11-26 and date is 2011-11-27 
mysql date is 2011-11-22 and date is 2011-11-26 
mysql date is 2011-11-19 and date is 2011-11-22 
mysql date is 2011-11-17 and date is 2011-11-19 
mysql date is 2011-11-15 and date is 2011-11-17 
mysql date is 2011-11-15 and date is 2011-11-17 
mysql date is 2011-11-09 and date is 2011-11-15 
mysql date is 2011-10-26 and date is 2011-11-09 
mysql date is 2011-10-26 and date is 2011-11-09 
mysql date is 2011-10-22 and date is 2011-10-26 

私は、MySQLの日付はすべての行で同じであることを期待してい..しかし、あなたが見ることができるように、それは個々の行からそれを引っ張っています。どんな考え?

ありがとうございます。

答えて

2

あなたは試してみてください:(!、MySQLがあなただけの1を与える必要があります)

SELECT timeStamp FROM postings 
WHERE city='$city' and STR_TO_DATE('$date', '%a, %d %M %Y') > timeStamp 
ORDER BY timeStamp DESC 
LIMIT 1 

をとにかくあなたはあなただけの1行が欲しいと感じた場合、あなたが使用することができませんでし

while($row = mysql_fetch_array($result)) 

ちょうど$row = mysql_fetch_array($result)

+0

ありがとうございました!うわ.. 1時間以上それを混乱させて! – Andi

+0

奇妙なことに、それはまだ私の日付を比較しません(私はエコーを得ることはありません)が、タイムスタンプは今は同じでなければなりません。 – Andi

+0

damnit。私はDESCを追加するのを忘れていました。それを加えた後、同じ動作が表示されます。うん! – Andi

1

"order by timeStamp desc"を制限1より前にクエリに追加してみてください。いずれの場合でも、最新のタイムスタンプでレコードを取得する必要があります。ここであなたの問題を解決するかもしれません。

+0

それでした。ありがとうございました!! – Andi

0

LIMIT 1の場合、mysqlは1行だけを返します。

ちょっとタイプミスや愚かな間違いがあるようです。 LIMITをファイルに書きましたが、アップロードするのを忘れた場合のように。

関連する問題