2012-10-25 106 views
0

如果我的問題不太合理,我很抱歉。讓我詳細解釋一下這個場景。如何從一個共有一個字段值和另一個字段不同的MySQL表中抽取兩行?

我有一個名爲「元素」一個MySQL表。在該表中有兩個MEDIUMINT字段,一個稱爲「user_id」,另一個稱爲「element_id」。

我想拔出用戶(檢查每一個單獨一次一個),誰擁有的表element_id = 8表中的行和行與element_id = 9。

我試過下面的查詢,但它不工作。有任何想法嗎?

SELECT * FROM elements WHERE user_id=2 AND (element_id=8 AND element_id=9) 
+2

只要改變第二進入OR:'SELECT * FROM元素,其中USER_ID = 2 AND(element_id = 8或element_id = 9)' –

+0

打我吧! @AleksG – TerryProbert

+0

比方說,我有另一個用戶在那裏與「USER_ID」 = 3,「element_id」 = 8的單排。該用戶在該表中沒有「element_id」= 9的行。如果我運行了建議的查詢,但用user_id = 3,則會有一個有效的結果。我不想要這個。我只希望結果是有效的,如果用戶有兩行,而不是一個或另一個。合理? –

回答

0

一個),其具有爲2的 「USER_ID」 值和 「element_id」 的8值,以及行b)該具有2的 「USER_ID」 值的行和「element_id」 的9

值轉換爲

(user_id = 2 AND element_id = 8) OR (user_id = 2 AND element_id = 9) 

這是相同的(更接近自己試試)

user_id=2 AND (element_id=8 OR element_id=9) 
+0

我也嘗試過。但我不想要一行或另一行。我想要兩行。 –

+0

這就是它的意思。你試過了嗎?你會得到所有行,只要它們是一個或另一個。如果你正在尋找具有所有這些功能的行,你什麼都得不到。可以說,你正在尋找所有藍色和綠色夾克的人,你需要把'夾克=藍色或外套=綠色'。這就是布爾邏輯的工作原理。如果你把'外套=藍色和外套=綠色',你會發現那些在一個夾克裏有兩種顏色的人。 (好吧,這可能是可能的,但不是隻有一種顏色的夾克,這樣不好的例子) – Nanne

+0

不,這不是什麼意思,是的,我確實嘗試了查詢。我希望表中的用戶具有表格中的兩行。所以,如果user_id = 3有一行element_id = 8和一行element_id = 9,那麼我想他。如果他只有表中的element_id = 8(並且不是9),我不需要他。建議的查詢在這裏沒有完成。 –

0

根據Aleks G,他建議應該工作。與USER_ID等於

SELECT * FROM elements WHERE user_id=2 AND (element_id=8 OR element_id=9) 

應該檢索所有行「2」 element_id等於「8」(如果存在),element_id等於「9」(如果存在)甚至認爲它說:「OR」之類的工作「如果存在於結果中,也包括它「。

+0

啊現在我明白了,那麼它應該是這樣的'SELECT * FROM elements WHERE user_id = 2 AND element_id IN(8,9)' 這樣試試吧。 – Welling

+0

不幸的是,如果用戶只有一行,而不是兩者,那麼新建議的查詢仍然有效。 :( –

+0

Tim,所以你必須在這裏使用子查詢,如果你使用這樣的查詢 'SELECT * FROM elements WHERE user_id = 2 AND element_id IN(8,9)HAVING COUNT(element_id)= 2' will return you第一行,而不是兩個,所以我們必須使用這個查詢作爲子查詢是這樣的 'SELECT * FROM elements WHERE user_id IN(SELECT user_id FROM elements WHERE user_id = 2 AND element_id IN(8,9)HAVING COUNT(element_id )= 2)AND element_id IN(8,9)' 也許這不是最好的方法,但應該工作,並返回你兩行user_id = 2只有當element_id是8和9.嘗試一下。 – Welling

1

Nanne的解決方案的工作原理:

SELECT * FROM elements as e, elements as ee WHERE e.user_id=2 AND e.element_id=8 AND e.user_id=ee.user_id AND ee.element_id=9 
相關問題