동일한 열 값을 가진 특정 행을 mysql 테이블에서 삭제하려면 어떻게 해야 합니까?
MySQL 쿼리에 문제가 있습니다.테이블에는 4개의 열이 있으며 다음과 같습니다.
id_users id_product quantity date
1 2 1 2013
1 2 1 2013
2 2 1 2013
1 3 1 2013
id_users
그리고.id_product
다른 테이블의 외부 키입니다.
원하는 것은 한 줄만 삭제하는 것입니다.
1 2 1 2013
두 번 뜨니까 삭제하고 싶어요.
이 질문을 해봤습니다.
delete from orders where id_users = 1 and id_product = 2
그러나 둘 다 삭제됩니다(복제되어 있기 때문에).이 문제를 해결할 힌트가 있나요?
를 추가합니다.limit
삭제 쿼리로
delete from orders
where id_users = 1 and id_product = 2
limit 1
모든 테이블에는 기본 키(1개 또는 여러 개의 열로 구성됨)가 있어야 합니다. 중복 행은 관계형 데이터베이스에서 의미가 없습니다.다음을 사용하여 삭제 행 수를 제한할 수 있습니다.LIMIT
단,
DELETE FROM orders WHERE id_users = 1 AND id_product = 2 LIMIT 1
다만, 이것으로 현재의 문제를 해결할 수 있습니다.프라이머리 키를 정의해, 보다 큰 문제에 임할 필요가 있습니다.
삭제할 행 수를 지정해야 합니다.고객님의 경우(및 고객님은 1개만 보관하고 싶을 것으로 생각됩니다) 다음과 같이 할 수 있습니다.
DELETE FROM your_table WHERE id_users=1 AND id_product=2
LIMIT (SELECT COUNT(*)-1 FROM your_table WHERE id_users=1 AND id_product=2)
테이블을 설계하는 가장 좋은 방법은 1개의 임시 행을 자동 증분으로 추가하고 기본 키로 유지하는 것입니다.그래서 우리는 위와 같은 문제를 피할 수 있다.
행 삭제에 대한 답변이 이미 있습니다.LIMIT
테이블에는 프라이머리 키가 있는 것이 이상적입니다.만약 없다면.
다른 방법을 제시하겠습니다.
이 예에서는 id_users와 id_product가 고유해야 합니다.
ALTER IGNORE TABLE orders ADD UNIQUE INDEX unique_columns_index (id_users, id_product)
그러면 데이터가 동일한 중복 행이 삭제됩니다.
그래도 오류가 발생하면 IGNORE 절을 사용하더라도 다음을 시도해 보십시오.
ALTER TABLE orders ENGINE MyISAM;
ALTER IGNORE TABLE orders ADD UNIQUE INDEX unique_columns_index (id_users, id_product)
ALTER TABLE orders ENGINE InnoDB;
- 테이블을 다시 작성함으로써
값이 중복된 행이 여러 개 있는 경우 테이블을 다시 생성할 수도 있습니다.
RENAME TABLE `orders` TO `orders2`;
CREATE TABLE `orders`
SELECT * FROM `orders2` GROUP BY id_users, id_product;
각 행에 대해 자동 증분 ID를 추가해야 하며, 그 후 해당 ID를 기준으로 행을 삭제할 수 있습니다.따라서 테이블은 각 행에 대해 하나의 ID를 가지며 id_user, id_product ecc...
언급URL : https://stackoverflow.com/questions/18378190/how-to-delete-a-certain-row-from-mysql-table-with-same-column-values
'programing' 카테고리의 다른 글
연관 배열 개체의 JavaScript foreach 루프 (0) | 2022.11.03 |
---|---|
파이썬 목록을 다른 "하위 목록"으로 분할합니다(예: 더 작은 목록). (0) | 2022.11.03 |
JavaScript에서 문자열의 대시 후 모든 항목 가져오기 (0) | 2022.11.03 |
JavaScript에서 문자열을 float로 변환하는 방법 (0) | 2022.11.03 |
SQL 데이터베이스에서 위도와 경도를 사용하여 가장 가까운 위치를 찾는 방법은 무엇입니까? (0) | 2022.11.03 |