MySQL中的记录重复。 EXISTS检查相同数据是否无法正常工作?

时间:2018-10-03 01:44:42

标签: php mysql mysqli insert duplicates

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个用户在输入内容,因此访问量并不是很大。我无权访问数据库指标,所以不能确定。

3 个答案:

答案 0 :(得分:0)

在WHERE子句中使用EXISTS条件。在您的情况下,第一个选择未指定表格和条件。

一个例子:

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

尝试像这样放置您的语句,如果它返回重复的数据,则只需使用DISTINCT。 (SELECT DISCTINCT * .....

答案 1 :(得分:0)

另一种适合您的方法:

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

答案 2 :(得分:0)

@Nick的回答提供了解决此问题的线索。分开EXIST检查和INSERT并不是最好的方法。如果一个用户获得0,则两个用户实际上可以执行INSERT。使用INSERT ... ON DUPLICATE KEY UPDATE...进行单个语句查询是可行的方法。