2013-12-20 79 views
0

我有問題我的情況建立查詢:選擇x FROM表WHERE

我已經表用戶:

ID NAME CREDITS 

1 "AAA" 10000 

2 "BBB" 20000 

3 "CCC" 30000 

和錶店:

ID ITEM_ID ACTIVE 

2 "table" true 

2 "chair" false 

1 "apple" true 

我想選擇ID爲ACTIVE的所有名稱等於真,所以對於我的情況輸出應該是:

"AAA" 
"BBB" 

我所做的:

SELECT NAME FROM user WHERE (SELECT DISTINCT ID FROM store WHERE ACTIVE=true); 

但首先是哪裏不對......我覺得。你可以幫幫我嗎?

感謝

回答

1

使用JOIN:

SELECT DISTINCT user.NAME 
FROM store 
JOIN user ON store.ID = user.ID 
WHERE ACTIVE = true 

我會補充說,你的問題表明,莫名其妙的用戶ID的含義店鋪ID,這似乎不大可能相同。更有可能你不應該比較這些ID列。

更可能的是,你不應該嘗試加入這兩個表。

+0

在我看來,這個查詢應該優先於子查詢。 +1 – Sebas

+0

我認爲'DISTINCT user.NAME'被過度殺死? –

+0

@ user2310289這是在'store.ID'不是唯一的情況下。你是對的 - *希望*過度殺傷,但是由於這樣的架構如此糟糕,你知道!? – Bohemian

1

試試這個

SELECT NAME FROM user WHERE ID in (SELECT DISTINCT ID FROM store WHERE ACTIVE=true); 

此外,由@Bohemian提到通常在一個表中ID場是指在該表中該記錄的唯一標識符。所以User.ID風馬牛不相及的Store.ID

+0

完美的作品,謝謝! – user3121183

相關問題