php - 将数据从一个表复制到另一个表但添加第二个 WHERE 子句不会插入数据

标签 php mysql where-clause

我有两张 table 。当用户单击一个按钮时,它会将表 1 中的数据复制到表 2 中,而表 2 中尚不存在该数据。

我的查询运行得很好,直到我在第一个名为“onsite”的表中添加了一个新列——要么设置为 yes,要么为 NULL。

这是我试过的查询。它不再向 past_bidder 表(表 2)插入任何数据

$copybidderquery = "INSERT INTO past_bidders(bidnum, bidfname, bidlname, bidphnum, bidlicense, bidaddress, bidtaxexempt, bidtaxid, date_created) 
SELECT bidnum, bidfname, bidlname, bidphnum, bidlicense, bidaddress, bidtaxexempt, bidtaxid, date_created 
FROM bidders 
WHERE (bidfname, bidlname, bidphnum, bidlicense, bidaddress) 
NOT IN (SELECT bidfname, bidlname, bidphnum, bidlicense, bidaddress FROM past_bidders) 
AND onsite != 'yes'";

我也试过将 where onsite != 'yes' 移到“WHERE”之后,它仍然做同样的事情。

$copybidderquery = "INSERT INTO past_bidders(bidnum, bidfname, bidlname, bidphnum, bidlicense, bidaddress, bidtaxexempt, bidtaxid, date_created) 
SELECT bidnum, bidfname, bidlname, bidphnum, bidlicense, bidaddress, bidtaxexempt, bidtaxid, date_created 
FROM bidders 
WHERE onsite != 'yes'
AND (bidfname, bidlname, bidphnum, bidlicense, bidaddress) 
NOT IN (SELECT bidfname, bidlname, bidphnum, bidlicense, bidaddress FROM past_bidders)";

如前所述,此查询在没有“onsite != 'yes'”行的情况下也能正常工作。

我认为这只是我忽略的一些小语​​法错误。任何帮助将不胜感激。

最佳答案

INSERT INTO past_bidders(bidnum, bidfname, bidlname, bidphnum, bidlicense, bidaddress, bidtaxexempt, bidtaxid, date_created) 
SELECT bidnum, bidfname, bidlname, bidphnum, bidlicense, bidaddress, bidtaxexempt, bidtaxid, date_created 
FROM bidders 
WHERE  onsite is NULL AND (bidfname, bidlname, bidphnum, bidlicense, bidaddress) 
NOT IN (SELECT bidfname, bidlname, bidphnum, bidlicense, bidaddress FROM past_bidders) 
;

检查下面的例子,当你说不等于某事时它不会返回空值

mysql> select * from calls;
+----+------------+---------+
| id | date       | user_id |
+----+------------+---------+
|  1 | 2016-06-22 |       1 |
|  2 | 2016-06-22 |    NULL |
|  3 | 2016-06-22 |    NULL |
|  4 | 2016-06-23 |       2 |
|  5 | 2016-06-23 |       1 |
|  6 | 2016-06-23 |       1 |
|  7 | 2016-06-23 |    NULL |
+----+------------+---------+
7 rows in set (0.00 sec)

mysql> select * from calls where user_id!=1;
+----+------------+---------+
| id | date       | user_id |
+----+------------+---------+
|  4 | 2016-06-23 |       2 |
+----+------------+---------+
1 row in set (0.00 sec)

mysql> select * from calls where user_id is null;
+----+------------+---------+
| id | date       | user_id |
+----+------------+---------+
|  2 | 2016-06-22 |    NULL |
|  3 | 2016-06-22 |    NULL |
|  7 | 2016-06-23 |    NULL |
+----+------------+---------+
3 rows in set (0.00 sec)

关于php - 将数据从一个表复制到另一个表但添加第二个 WHERE 子句不会插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38019474/

相关文章:

php - 如何删除字符串的第一个空格

javascript - jquery 显示从 php 返回的多个 json 对象

php - 有没有办法知道一行是否更新?

php - 如何在为注册用户提供完全访问权限的同时限制未注册用户的访问权限?

php - 如何检查 var 是否存在于数据库列中,如果不存在则不执行任何操作

PHP/MySQL where/order 子句不对数据进行排序

java - Java 和 PHP 之间的加密不匹配

mysql - 用内容填充表格并避免空表格

PHP 多个文件上传并将名称存储在数据库中

MYSQL显示两个可编辑的不同表中的两列