2011-12-09 28 views
0

我正在尋找動態選擇連接查詢中的特定列,其中只有當另一個特定字段的值不等於0時,纔會選擇特定字段。MySQL在連接中動態選擇字段?

因此,這裏是我正在進行的操作。

該查詢使用以下3個表,用戶 - 學校 - 校園

我想選擇所有來自用戶的數據,並且如果用戶的campus_id字段不等於0,那麼我想包括校園的校園名稱字段,在其中,campus.id = users.campus_id,我該怎麼做?

+0

也許這將幫助? http://stackoverflow.com/questions/566600/dynamic-conditional-sql-join – Ruben

+0

@Braydon:每個結果行必須具有相同的列數。如果campus_id爲0,您希望列的值是多少?此外,[示例代碼](http://sscce.org/)說明了數量。請包含表格模式(作爲CREATE TABLE語句),示例數據(如INSERT語句),儘可能多的查詢,查詢結果和期望的結果。 – outis

+0

[基於MySQL中其他列的查詢條件列]的可能重複(http://stackoverflow.com/questions/849348/conditional-column-for-query-based-on-other-columns-in-mysql) – outis

回答

2

你可以使用CASE WHEN

SELECT column1, column2, (CASE WHEN U.campus_id<>0 THEN campus_name) FROM USERS U, CAMPUSES C 
WHERE (U.campus_id <>0 AND C.id=U.campus_id) 
+0

如果我想要超過1的條件,我該如何做到這一點? –

+0

@BraydonBatungbacal你可以使用CASE WHEN .... THEN ... WHEN ... THEN .... ELSE檢查[documentation](http://dev.mysql.com/doc/refman/5.0/en /case-statement.html) – Mansuro

0
select * from users u 
left join campuses c on (u.campus_id = c.id)