MySQL查询在一个查询中检查多个记录

时间:2014-02-17 03:20:46

标签: php mysql

我在php中有以下数据:

每个博客

ID & Timestamps

然后我有一张包含以下内容的表:

| id | blog | timestamp |

我需要找出我的哪个php时间戳数据等于mysql数据库中的timestamp

当然,我可以为php中的每个时间戳运行一百个查询,以查看它是否已更改,但这似乎效率低下。

有没有办法在Mysql中放一个查询来获取数据?

为了澄清,我的php ID & timestamps位于像

这样的数组中
Array ( [3] => Array ( [timestamp] => 1389414084 ) ) 

如果ID = 3的记录的时间戳为1389414084,我需要检查mysql。

问题是,要检查大量数据,最终会产生大量查询。我只需要那些不匹配的那些。

我不知道如何解决这个问题,所以任何帮助都会非常感激。

澄清 - 第一个数据是json。这就是它必须如何。我解码它然后必须匹配博客时间戳。

3 个答案:

答案 0 :(得分:0)

我建议的是制作ID,Blog&时间戳并将其存储在表本身中。而不是检查id&时间戳,您可以检查哈希匹配(从我的BlogTimeStamp中选择*,其中哈希不是IN('hash1','hash2',....)。

我不知道你的具体要求。也许会有一个更好的解决方案

答案 1 :(得分:0)

SELECT * 
FROM myBlogTable
WHERE timestamp NOT IN (1389414084);

如果您使用select语句来获取1389414084,那么将其插入括号中而不是在时间戳中插入硬编码,以便在您需要时查询是动态的。

答案 2 :(得分:0)

这就是我最后所做的。我只是打破了查询并构造它,以便我在一个查询中拥有所有内容。

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 .= ")";