首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何用PHP比较两个表并返回不匹配的结果

如何用PHP比较两个表并返回不匹配的结果
EN

Stack Overflow用户
提问于 2018-08-24 03:29:45
回答 3查看 31关注 0票数 0

我有两个表格,上面有两个名字的列表。

table1

代码语言:javascript
复制
id  name            joined_on
1   Daniel Smith    2018-07-01 00:00:00
2   James Owen      2018-07-03 00:00:00
3   Dave John       2018-04-04 00:00:00
4   Dean Davidson   2018-02-01 00:00:00
5   James Saunders  2018-07-04 01:05:02
6   Earl Smith      2018-07-04 01:05:19
7   Faud Earl       2018-07-04 01:07:46
8   Casper James    2018-05-01 00:00:00

table2

代码语言:javascript
复制
id  name            joined_on
1   Daniel Smith    2018-07-04 00:00:00
2   James Owen      2018-07-04 01:04:03
3   Dale Davidson   2018-02-02 00:00:00
4   Faud Earl       2018-05-15 00:00:00
5   Casper James    2018-05-26 00:00:00
6   Dave John       2018-07-04 01:05:10

如何将table1的所有名称与table2的所有名称进行比较,并返回所有不匹配的内容。我想实现它将从table1返回所有不在table2中的名称。

我需要这个做作业,但是我不知道从哪里开始。如果有人能帮上忙我将不胜感激。

编辑:

现在我得到了这个,我试着用不同的方法打印结果,但是它不返回名字,它只返回"NULL“。

代码语言:javascript
复制
$sql = "SELECT name from Players_christmas where name not in (select name from Players_halloween";
$assoc = mysqli_fetch_assoc($sql);
var_dump($assoc);
EN

回答 3

Stack Overflow用户

发布于 2018-08-24 03:37:24

您可以直接在SQL中执行此操作

您可以使用left join并检查空值

代码语言:javascript
复制
  select name from table1 
  left join table2 on table1.name = table2.name 
  where t2.name is null 
票数 1
EN

Stack Overflow用户

发布于 2018-08-24 03:37:46

我认为您可以通过查询从每个表中获取所有数据,对于每一行,将其作为关联数组或常规数组存储到整体数组中,如下所示。

代码语言:javascript
复制
$sql = "SELECT * FROM your_table1";
        $result = $conn->query($sql);

        if ($result->num_rows > 0) {
                // output data of each row
                while($row = $result->fetch_assoc()) {
                    $table1_rows[$i] = $row;
                    $i++;
                }

一旦你同时拥有了$table1_rows和$table2_rows,你就可以使用数组之间的差异函数( array_diff_assoc表示关联数组,array_diff表示标准数组)

$array_of_different_indexes = array_diff($table1_rows,$table2_rows);

array_diff函数非常方便,这里有一个指向它的链接https://secure.php.net/manual/en/function.array-diff.php

票数 0
EN

Stack Overflow用户

发布于 2018-08-24 03:41:31

正如您已经在描述中所描述的“不在table2中的来自table1的所有名称”,您可以这样做:

代码语言:javascript
复制
SELECT `name` from `table1` 
WHERE `name` not in (SELECT `name` from `table2`)

这里有一个小把戏:http://sqlfiddle.com/#!9/e87c78/1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51993035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档