[英]Selecting Distinct Values with multiple conditions
我試圖根據一個表的DISTINCT值向表中插入條目,這些表也不包含單獨表中的值。 我假設問題出在我的JOIN中。
在表wp_posts中,ID的值是唯一的,但在表wp_term_relationships中,object_id可以有多個條目。
我想要的是獲取描述中包含某些單詞的所有不同ID(在wp_posts中),但也沒有與該表中與object_id相關聯的wp_term_relationships表中的某些term_taxonomy_id
感謝您的回復,我做了一些更改,但仍然遇到問題。
//Here is what I have so far:
INSERT INTO wp_term_relationships (object_id, term_taxonomy_id, term_order)
SELECT DISTINCT ID, '5209', '0' FROM wp_posts JOIN wp_term_relationships
ON wp_posts.ID = wp_term_relationships.object_id
WHERE wp_posts.post_content LIKE '%Cadillac%'
AND wp_posts.post_content LIKE '%Escalade%'
AND wp_term_relationships.term_taxonomy_id not like '5209';
生成的查詢嘗試插入不符合最后條件的值。 我假設問題在於加入。
答案后編輯:
感謝Gen Wan建議的代碼,引導我回答我的問題! 這是正確的代碼:
INSERT INTO wp_term_relationships (object_id, term_taxonomy_id, term_order)
SELECT DISTINCT ID, '5209', '0' FROM wp_posts
JOIN (
select object_id, term_taxonomy_id from wp_term_relationships
WHERE wp_term_relationships.term_taxonomy_id = 5209
)a
ON wp_posts.ID = a.object_id
WHERE wp_posts.post_content LIKE '%Cadillac%'
AND wp_posts.post_content LIKE '%Escalade%'
AND a.term_taxonomy_id not like '5209';
這將工作:
INSERT INTO wp_term_relationships (object_id, term_taxonomy_id, term_order)
SELECT DISTINCT ID, '5209', '0' FROM wp_posts JOIN wp_term_relationships
ON wp_posts.ID = wp_term_relationships.object_id
WHERE wp_posts.post_content LIKE '%Cadillac%'
AND wp_posts.post_content LIKE '%Escalade%'
AND wp_term_relationships.term_taxonomy_id not like '5209';
不確定您正在使用哪個數據庫服務器,但嘗試更改您的最后條件:
AND NOT wp_term_relationships.wp_term_relationships = '5209';
至:
AND wp_term_relationships.wp_term_relationships <> '5209';
如果我正確理解您的問題,您需要首先從wp_term_relationships獲取不同的object_id和term_taxonomy_id:
select distinct object_id, term_taxonomy_id from wp_term_relationships
然后使用您的條件加入派生表:
INSERT INTO wp_term_relationships (object_id, term_taxonomy_id, term_order)
SELECT DISTINCT ID, '5209', '0' FROM wp_posts
JOIN (select distinct object_id, term_taxonomy_id from wp_term_relationships)a
ON wp_posts.ID = a.object_id
WHERE wp_posts.post_content LIKE '%Cadillac%'
AND wp_posts.post_content LIKE '%Escalade%'
AND a.term_taxonomy_id not like '5209';
您在選擇中硬編碼了分類法id = 5209。 這就是為什么你的插入將5209放在所有插入的行中。
SELECT DISTINCT ID, **'5209'**, '0'
請向我們展示樣本數據,以便我們可以清楚地看到問題。 我去了這個免費網站創建一個數據庫沙箱: https : //www.db-fiddle.com/
然后我運行你的查詢,我沒有看到結果的問題。 如果您有不同的預期結果,請向我們展示。
謝謝。
網站: https : //www.db-fiddle.com/復制並粘貼此並執行:
架構:
create table wp_posts(ID integer, post_content varchar);
insert into wp_posts values (1, 'Cadillac Escalade');
insert into wp_posts values (2, 'Ford Escape');
insert into wp_posts values (3, 'Cadillac Escalade');
insert into wp_posts values (4, 'Escalade Cadillac');
insert into wp_posts values (5, 'Escalade Cadillac');
create table wp_term_relationships(object_id integer, term_taxonomy_id integer);
insert into wp_term_relationships values (1 ,5209);
insert into wp_term_relationships values (1 ,1000);
insert into wp_term_relationships values (2 ,5209);
insert into wp_term_relationships values (2 ,1000 );
insert into wp_term_relationships values (2 ,5209);
insert into wp_term_relationships values (3 ,1000);
insert into wp_term_relationships values (5 ,5209);
insert into wp_term_relationships values (5 ,1000);
查詢:
SELECT DISTINCT ID, term_taxonomy_id, '5209' as new_term_taxonomy_id, '0' as nothing_
FROM wp_posts
JOIN wp_term_relationships
ON wp_posts.ID = wp_term_relationships.object_id
WHERE wp_posts.post_content LIKE '%Cadillac%'
AND wp_posts.post_content LIKE '%Escalade%'
AND wp_term_relationships.term_taxonomy_id <> 5209;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.