Повторяющиеся записи в MySQL.СУЩЕСТВУЕТ проверка на те же данные не работает должным образом? - PullRequest
0 голосов
/ 03 октября 2018
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?Он по-прежнему позволяет вставлять дубликаты (1 из 1000 записей).Около 100 пользователей делают записи, поэтому, я полагаю, трафик не такой большой.У меня нет доступа к показателям базы данных, поэтому я не могу быть уверен.

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Другой подход для вас:

INSERT INTO your_table VALUES (SELECT * FROM table GROUP BY your_column_want_to_dupplicate);
0 голосов
/ 09 октября 2018

Ответ @Nick дал ключ к решению проблемы.Отделить EXIST чек и INSERT было не лучшим способом.Два пользователя действительно могли сделать INSERT, если один получил 0. Один запрос оператора с INSERT ... ON DUPLICATE KEY UPDATE... был подходящим вариантом.

0 голосов
/ 03 октября 2018

Условие EXISTS используется в предложении WHERE.В вашем случае первый выбор не определяет таблицу и условие.

Один пример:

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

Попробуйте поставить ваше утверждение таким образом, и если оно возвращает дублированные данныеПросто используйте DISTINCT.(SELECT DISCTINCT * .....)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...