我下面有两张表,上面都是名单。
表1
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
表2
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
如何比较表1的所有名称与表2的所有名称并返回所有不匹配的名称。我想实现它将返回表1中所有不在表2中的名称。
我需要这个做作业,但我不知道从哪里开始。如果有人能帮忙我会很感激的。
编辑:
现在我得到了这个,我试着用不同的方式打印结果,但是它不返回名称,它只返回“null”。
$sql = "SELECT name from Players_christmas where name not in (select name from Players_halloween";
$assoc = mysqli_fetch_assoc($sql);
var_dump($assoc);
3条答案
按热度按时间r7knjye21#
我认为您可以通过查询从每个表和每行获取所有数据,并将其存储为关联数组或仅将常规数组存储到整体数组中,如下所示。
一旦同时拥有$table1\u行和$table2\u行,就可以使用这个数组之间的差异函数(array\u diff\u assoc用于关联数组,array\u diff用于标准数组)
$array_of_different_indexes = array_diff($table1_rows,$table2_rows);
array_diff函数非常方便,这里有一个链接https://secure.php.net/manual/en/function.array-diff.phpss2ws0br2#
您可以直接在sql中执行
您可以使用left join并检查空值
lkaoscv73#
正如您在描述“表1中所有不在表2中的名称”中所述,您可以执行以下操作:
这里有一把小提琴:http://sqlfiddle.com/#!9/e87c78/1号