Как правильно создать запрос?
Здраствуйте!
Есть 2 таблицы работающие с отзывами:
`review` - основная таблица (связывает с кастомером и тд)
`review_detail` - хранит сам отзыв
Мне нужно удалить дубликаты отзывов по 2 полям `title`, `nickname`, но при этом сохранить хотя бы 1 запись
Я создал такой SQL, но у меня все отзывы просто удалились
DELETE FROM `review` WHERE `review_id` NOT IN (SELECT max(`review_id`) FROM `review_detail` GROUP BY `title`, `nickname` HAVING count(*) > 1) |
DELETE FROM `review` WHERE `review_id` NOT IN (SELECT max(`review_id`) FROM `review_detail` GROUP BY `title`, `nickname` HAVING count(*) > 1)
Может подскажите что я делаю не так?
Дополнительно:
что я делаю не так?
Вопрос публикуете не так. Выложите CREATE TABLE + INSERT INTO с примером данных (5-7 записей) и требуемый финальный результат с пояснениями, а также укажите точно СУБД (судя по тексту запроса - MySQL?), включая точную версию.
Виноват
https://www.mycompiler.io/view/HnrSXkf338R
Ожидется результат записей в таблице review
3, 2
4, 2
5, 2
СУБД: MySQL
DELETE t1 FROM review_detail t1 JOIN review_detail t2 USING (title, nickname) WHERE t1.detail_id < t2.detail_id; |
DELETE t1 FROM review_detail t1 JOIN review_detail t2 USING (title, nickname) WHERE t1.detail_id < t2.detail_id;
https://dbfiddle.uk/?rdbms=mysql_5.7&fiddle=dc6a90...
- Спасибо, все равно конечно не то, но я уже нашел решение)
DELETE FROM review WHERE review_id NOT IN (SELECT MAX(review_id) FROM review_detail GROUP BY title);
DELETE FROM review WHERE review_id NOT IN (SELECT MAX(review_id) FROM review_detail GROUP BY title);
- nikitoshq, а можно полюбопытствовать, что значит "не то"?
Да, Ваше решение вообще-то выполняет другую задачу. То есть абсолютно другую.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для создания запроса на языке PHP, вам необходимо использовать функции и методы, предоставляемые различными расширениями PHP. Вот пример того, как можно создать запрос к базе данных MySQL с использованием объектно-ориентированного подхода:
connect_error) { die("Connection failed: " . $conn->connect_error); } // Создаем SQL запрос $sql = "SELECT id, name, email FROM users"; $result = $conn->query($sql); // Проверяем, есть ли результат if ($result->num_rows > 0) { // Выводим данные каждой строки результата while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>"; } } else { echo "0 results"; } $conn->close(); ?>
В данном примере мы устанавливаем соединение с базой данных MySQL, создаем SQL запрос для выборки данных из таблицы "users" и выводим результат на экран. Помните, что перед использованием данных из базы данных необходимо проводить их обработку для предотвращения SQL инъекций.