2010-05-31 58 views
0

我想使用JOIN來返回布爾結果。下面是數據的一個例子...mysql布爾連接

T1

id | data 
----------- 
1 | abcd  
2 | 2425  
3 | xyz 

T2

id | data | t1_id | 
------------------------- 
1 | 75 |  2  |  
2 | 79 |  2  |  
3 | 45 |  3  | 

因此,與這兩個表我要選擇從T1中的所有數據,還有一個給定的變量是否出現在每個id的t2.data中。

所以說變量是79,結果應該是

id | data | t2_boolean 
-------------------------- 
1 | abcd | 0  
2 | abcd | 1  
3 | xyz | 0 

所以我想某種加盟是必要的,但沒有一個WHERE子句。 我一直在關注這個問題。可能嗎?我真的需要它在同一個語句中,因爲我想按布爾字段排序結果。

由於布爾值需要是一個字段,我可以在字段中加入一個連接嗎?

謝謝...

回答

2

您可能需要做一些工作敲成適合MySQL的格式這一點,但做到這一點幫助?

SELECT t1.id, t1.data, t2.id IS NOT NULL AS t2_boolean 
FROM t1 
LEFT OUTER JOIN t2 on t1.id = t2.id AND t2.data = 79 
+0

但願它適合MySQL! – 2010-05-31 18:34:02

+1

我刪除了我的答案,因爲它使用了錯誤的連接,但它可能值得一提的是,你可以只做't2.id IS NOT NULL AS t2_boolean'而不是使用CASE – 2010-05-31 18:35:06

+1

@Martin:MySQL自5.0以來支持ANSI'CASE' :http://dev.mysql.com/doc/refman/5.0/en/case-statement.html – 2010-05-31 18:37:30