簡體   English   中英

MySQL查詢在一個查詢中檢查多個記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM