mysql中的重复记录是否检查相同数据是否工作不正常?

ktca8awb  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(347)
SELECT EXISTS 
(SELECT * FROM table WHERE deleted_at IS NULL and the_date = '$the_date' AND company_name = '$company_name' AND purchase_country = '$p_country' AND lot = '$lot_no') AS numofrecords")

这个mysql查询有什么问题?它仍然允许重复插入(1000条记录中有1条)。大约有100个用户输入,所以我想流量并没有那么大。我没有访问数据库的权限,所以我不能确定。

dfty9e19

dfty9e191#

来自@nick的答案提供了解决问题的线索。分开的 EXIST 检查并 INSERT 不是最好的办法。实际上有两个用户 INSERT ,如果一个得到0。使用 INSERT ... ON DUPLICATE KEY UPDATE... 是一条路要走。

ou6hu8tu

ou6hu8tu2#

exists条件用于where子句。在您的例子中,第一个select没有指定表和条件。
举个例子:

SELECT *
FROM customers
WHERE EXISTS (SELECT *
              FROM order_details
              WHERE customers.customer_id = order_details.customer_id);

试着这样写语句,如果它返回重复的数据,只需使用distinct( SELECT DISCTINCT * ..... )

omhiaaxx

omhiaaxx3#

另一种方法:

INSERT INTO your_table VALUES (SELECT * FROM table GROUP BY your_column_want_to_dupplicate);

相关问题