我試圖執行以下語句:錯誤代碼:1054:未知列
DELETE a
FROM db.table1 a
INNER JOIN (SELECT domainname
FROM db.table1
WHERE domainname LIKE '%.uci.edu'
GROUP BY keyvalue
HAVING COUNT(1) > 1
) b ON a.id = b.id
我在我的標題提到的錯誤。我試圖達到的目標已經在這裏解釋:How to make the result of one query be in the NOT IN clause?
請幫我做這個任務。爲什麼b.id未知?我沒有這種加入類型的經驗。我理解加入兩個不同的表格,但是這個聲明可以有人解釋嗎?請注意,domainname
是獨一無二的價值。主鍵是id
,它是auto_increment,但我沒有用它來區分列。我主要使用另一個值domainname_no
,這是唯一的。
編輯:上面的命令不起作用。我需要的是: 我有一個域名列表。說:aa.yahoo.com,bb.yahoo.com,cc.yahoo.com,aa.msn.com。每個域名都有一個關鍵值。如果密鑰是共享的,我想刪除這條記錄。所以,我選擇了由鍵值對它們進行分組的不同值。如果記錄不在不同的集合中,並且具有相同的頂級域名,那麼我不需要它。
示例:我的表格: cert_id |域名| domain_certificate |鍵 1 | a.yahoo.com | a.yahoo.com_1 | 5555 2 | a.yahoo.com | a.yahoo.com_2 | 6666 3 | b.yahoo.com | b.yahoo.com_1 | 5555 4 | b.yahoo.com | c.yahoo.com_2 | 6666
每個域可能有多個與密鑰關聯的證書。如果一個或多個具有不同域名的證書具有相同的密鑰,我想刪除它。
現在,我有兩個域名是a.yahoo.com
和b.yahoo.com
有相同的關鍵。我需要刪除b.yahoo.com
以及任何具有相同模式(如'%.yahoo.com')且不等於a.yahoo.com
這是不同值的域名。
目前,我在做什麼是quering不同值:
select distinct domainname
from db.table1
where domainname like '%.uci.edu'
group by keyvalue
order by domainname
然後刪除,是不是在不同的列表中的任何值,並且具有相同的圖案%.yahoo.com
delete from db.table1 where domain not in (I type the list of distinct domain
names manually)
and domainanme like '%.yahoo.com';
我希望問題現在已經清楚了。
但是這個命令不起作用。詳情請參閱:How to make the result of one query be in the NOT IN clause?
什麼是GROUP BY keyvalue應該做的?你能顯示'domainname'表的樣本數據嗎? – 2012-08-06 15:48:03
keyvalue是一個數字,例如。 867676。如果發現兩個不同的域名重複,我想刪除重複的記錄。 – 2012-08-06 17:08:35