2011-04-02 208 views
0

我有一個表的列:conditional1,conditional2,data。如果其中任何一行還包含conditional2 = value2,我需要返回所有行的條件1 =值1。我怎樣才能做到這一點?條件MySQL查詢

編輯:我有些疑惑。

如果你有專欄

`conditional1 | conditional2 |數據

A | A | A

A | B | A`

我要回兩行,如果conditional1 = A和conditional2 = B

編輯2:目前仍然有些混亂。

這裏是另一個例子:

conditional1 | conditional2 |數據

1 | 1 | A

1 | 2 | B

2 | 1 | C

2 | 2 | D

如果conditional1 = 1且conditional2 = 1,則應該返回

1 | 1 | A

1 | 2 | B

如果conditional1 = 2且conditional2 = 1,則應該返回

2 | 1 | C

2 | 2 | d

如果conditional1 = 2和conditional2 = 2,則應該返回

2 | 1 | C

2 | 2 | D

如果conditional1 = 2且conditional2 = 3,則它不應該返回任何行。

+0

你套牢查詢本身,或者PHP實現這一點,還是? – 2011-04-02 10:41:27

+0

我編輯的問題,因爲有一些混淆。 – Anonymous1 2011-04-02 10:50:06

+0

你的問題仍然沒有意義。 (也許這就是爲什麼*現有答案中的所有*都是不正確的。)你的意思是,如果conditional1 = A ** OR ** conditional2 = B? – 2011-04-02 10:51:09

回答

3
select * 
from tbl A 
where conditional1 = 'A' 
and exists (
    select * from tbl B 
    where B.conditional1 = 'A' and B.conditional2 = 'B') 

或以上的MySQL版本適合

select * from tbl 
where conditional1 in 
(
    select conditional1 
    from tbl 
    where conditional1 = 'A' and conditional2 = 'B' 
) 
+0

我試過了你的第二個版本,但是我收到了語法錯誤:SELECT * FROM表 其中conditional1在 ( 選擇conditional1 從表 其中conditional1 = 1和conditional2 = 1 ) – Anonymous1 2011-04-02 11:20:38

+0

如果您使用的文字 「表」,那麼這顯然是錯誤的。否則,我至少在MySQL和SQL Server中檢查了語法,兩者都很好用 – RichardTheKiwi 2011-04-02 11:24:12

+0

你是對的 - 在示例中使用「table」並不是最聰明的事情。你的回答很好。謝謝! – Anonymous1 2011-04-02 11:29:11

0
SELECT * FROM table 
    WHERE conditional1 = 'A' AND 1 IN 
     (SELECT 1 FROM table WHERE conditional1 = 'A' AND conditional2 = 'B' LIMIT 1) 

我想我終於明白了!

+0

對不起,我的一端存在問題:#1235 - 此版本的MySQL尚不支持'LIMIT&IN/ALL/ANY/SOME子查詢' – Anonymous1 2011-04-02 11:27:45