[英]MySQL Query Checking Multiple Records In One Query
我在php中有以下數據:
每個博客的ID & Timestamps
然后我有一個表,其中包含:
| id | blog | timestamp |
我需要找出哪個php時間戳數據不等於mysql數據庫中的timestamp
。
當然,對於php中的每個時間戳,我都可以運行一百個查詢,以查看是否已更改,但這似乎效率很低。
有什么方法可以在Mysql中放置一個查詢以獲取數據?
澄清一下,我的php ID & timestamps
在一個數組中,例如
Array ( [3] => Array ( [timestamp] => 1389414084 ) )
我需要檢查mysql,如果ID = 3的記錄的時間戳為1389414084。
問題是,要檢查大量數據,最終將導致大量查詢。 我只需要不匹配的那些。
我不知道該如何處理,因此我們將不勝感激。
為了澄清-第一個數據是json。 那就是必須的。 我將其解碼,然后必須將其與博客時間戳匹配。
我的建議是對ID,Blog和Timestamp進行哈希處理並將其存儲在表本身中。 而不是檢查ID和時間戳,您可以檢查哈希值是否匹配(從我的BlogTimeStamp中選擇*,其中哈希值不輸入('hash1','hash2'...)。
我不知道您的確切要求。 也許會有更好的解決方案
SELECT *
FROM myBlogTable
WHERE timestamp NOT IN (1389414084);
如果使用select語句獲取1389414084
則將其插入括號中,而不是在時間戳中進行硬編碼,以便在需要時動態查詢。
這就是我最后所做的。 我只是分解查詢並構造它,以便將所有內容都放在一個查詢中。
SELECT * FROM title WHERE id IN((SELECT id FROM title WHERE id = '75' AND date ='1392501995'),(SELECT id FROM title WHERE id = '74' AND date ='1392401481'))
因此,您只需在php中創建它。
$i = count($fav);
$sql = 'SELECT * FROM title WHERE id IN(';
foreach($fav as $key => $val){
$sql .= "(SELECT id FROM title WHERE id = '".$key."' AND date ='".$val["date"]."')";
if($i > 1) {
$sql .= ",";
}
$i = $i-1;
}
$sql .= ")";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.