簡體   English   中英

將sql中的兩個值相互比較

[英]compare two values in sql with eachother

我有一個包含雙圖像的magento數據庫,我想刪除這些圖像,但是首​​先我要通過sql查詢來檢測它們。

我已經嘗試過此代碼

select t1.VALUE from catalog_product_entity_media_gallery t1 
join catalog_product_entity_media_gallery t2 on (t1.value = t2.value)

這個:

  select * from catalog_product_entity_media_gallery where value=value 

還有這個:

select
*
from
(
    select
        value
    from
        catalog_product_entity_media_gallery
    group by
        value
    having count(*) > 1
) as t
inner join catalog_product_entity_media_gallery on (
    catalog_product_entity_media_gallery.value = t.value
)

第一個給出錯誤,第二個和第三個給出每個產品。

這是我的小型測試數據庫

嘗試一下:

select
*
from (
    select 
        entity_id,attribute_id,value,
        MIN(value_id) value_id
    from catalog_product_entity_media_gallery
    group by
        entity_id,attribute_id,value
    having COUNT(*) > 1
) A1
inner join catalog_product_entity_media_gallery A2 on
    A1.entity_id = A2.entity_id and
    A1.attribute_id = A2.attribute_id and
    A1.value = A2.value and
    A1.value_id = A2.value_id

您可以按值獲取最小標識,然后獲取其他記錄:

select
*
from catalog_product_entity_media_gallery t1
where exists
( select * from 
  (select  value, min(value_id) as min_value_id
    from   catalog_product_entity_media_gallery
    group by  value
  ) as t2
  where t1.value=t2.value and t1.value_id=t2.min_value_id
)

如果要刪除重復的行,則更改存在為不存在。

delete
from catalog_product_entity_media_gallery t1
where not exists
( select * from 
  (select  value, min(value_id) as min_value_id
    from   catalog_product_entity_media_gallery
    group by  value
  ) as t2
  where t1.value=t2.value and t1.value_id=t2.min_value_id
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM