【问题标题】:get results from table which other table does not have从其他表没有的表中获取结果
【发布时间】:2016-04-21 14:20:45
【问题描述】:

我正在尝试比较两个数组:

第一个数组

$query = $db->prepare("SELECT vraagnummer FROM insertquestion");
$query->execute();
$fetch_query = $query->fetchAll(PDO::FETCH_ASSOC);

第二个数组

$query = $db->prepare("SELECT vraagnummer FROM vraag");
$query->execute();
$fetch_query_exists = $query->fetchAll(PDO::FETCH_ASSOC);

我想收到$fetch_query 的所有结果,除了fetch_query_exists 中的结果

我尝试使用:

$result=array_diff($fetch_query ,$fetch_query_exists );

但是没有结果显示,只是一个空数组。

那么我如何获取fetch_query 的结果,不包括fetch_query_exists 中存在的结果?

【问题讨论】:

  • 不能直接在SQL查询中过滤掉结果吗?
  • 将您的查询与Where NOT IN 结合起来?
  • 您可以在 1 个查询中完成所有操作,我相信该术语是负连接。

标签: php mysql pdo compare fetch


【解决方案1】:

您可以使用NOT IN 在单个查询中完成此操作

SELECT vraagnummer FROM insertquestion
  WHERE vraagnummer NOT IN(SELECT vraagnummer FROM vraag)

【讨论】:

  • 谢谢!解决了它。更容易。一旦我能接受答案,我会感谢你,祝你有美好的一天
【解决方案2】:

除了@Saty 的回答之外,我相信以下内容也可以在没有子选择的情况下解决问题。

SELECT i.vraagnummber 
FROM insertquestion i 
LEFT JOIN vraag v
    ON v.vraagnummer = i.vraagnummer
WHERE v.vraagnummer IS NULL;

【讨论】:

    【解决方案3】:

    也许是这样,但不确定:

    $query = $db->prepare("SELECT vraagnummer FROM insertquestion RIGHT JOIN vraag ON insertquestion.vraagnummer = vraag.vraagnummer");
    $query->execute();
    $fetch_query = $query->fetchAll(PDO::FETCH_ASSOC);
    

    【讨论】:

      【解决方案4】:

      如果您不想使用单个查询,请使用:

      $result = array_diff_assoc($fetch_query , $fetch_query_exists );
      

      【讨论】:

        猜你喜欢
        • 2021-02-23
        • 1970-01-01
        • 2013-04-08
        • 1970-01-01
        • 2017-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-31
        相关资源
        最近更新 更多