我有两张 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/