2015-01-21 23 views
1

我想在同一個查詢示例中使用相同的列倍數在 查詢中如何做到這一點獲得結果?我們可以在sql查詢中多次使用同一個列名

  SELECT J.ID , J.U_POST_ID, 
      J.TITLE,J.CREATION_DATE,J.STATUS, 
      R.FIRST_NAME, R.LAST_NAME,R.CLINICAL_CLINIC_NAME, 
      J.REQUIREMENT,J.STATE,J.CITY,J.DESCRIPTION,J.CALL_DUR,J.USER_ID 
      FROM 
      df_job_meta M LEFT OUTER JOIN df_job_post J ON 
      M.JOB_ID = J.ID 
      LEFT OUTER JOIN df_register_users R ON 
      R.ID = J.USER_ID 
      WHERE 
      J.STATUS='ACTIVE' AND R.OCCUPATION !='student' AND M.VALUE IN ('Clinical') AND M.VALUE IN ('Full Time') group BY J.ID DESC 

我的表結構是這樣的

JOB_ID |META_KEY  | VALUE 
1   | work_hour | Full Time 
1   | profile  | Clinical 
1   | pay_scale  | Sharing 
+0

你試過了嗎?如果嘗試過,你有任何錯誤? – 2015-01-21 09:22:07

+0

使用別名,例如'選擇J.ID爲J_ID,R.ID爲R_ID,....' – 2015-01-21 09:22:29

+0

是的,我得到了錯誤。什麼是解決方案? – 2015-01-21 09:23:06

回答

3

我覺得你有這樣的煩惱:

在你查詢你添加一個WHERE子句這樣的:

M.VALUE IN ('Clinical') AND M.VALUE IN ('Full Time') 

此條件始終爲FALSE。

你必須崩潰的條件:

M.VALUE IN ('Clinical', 'Full Time') 

關於使用一列多重的:如果你想在你的SELECT字段列表中添加同一列,則必須使用別名是這樣的:

SELECT J.id as ID1, J.id as ID2 and so on... 

如果你想使用一個WHERE條件有沒有問題同列,但要注意關係運算符使用

EDIT

由例如約M.VALUE進一步的解釋:

假設你有一個名爲Person表。

您有一列名爲sex的列,其中您有關於FEMAIL的值F和關於MALE的M。

所以,如果你寫這個查詢:

SELECT * FROM Person WHERE sex = 'F' and sex = 'M' 

您有0行受到影響

,但如果你寫這個查詢:相當於

SELECT * FROM Person WHERE sex IN ('F', 'M') 

SELECT * FROM Person WHERE sex = 'F' or sex = 'M' 

你有所有的行在你的餐桌上

1

既然你只有在你使用IN功能的一個值,你可以替換成等號,並使用或使用括號 - 也GROUP BY不是ASC或DESC這是排序依據 - 嘗試:

SELECT J.ID , J.U_POST_ID, 
      J.TITLE,J.CREATION_DATE,J.STATUS, 
      R.FIRST_NAME, R.LAST_NAME,R.CLINICAL_CLINIC_NAME, 
      J.REQUIREMENT,J.STATE,J.CITY,J.DESCRIPTION,J.CALL_DUR,J.USER_ID 
      FROM 
      df_job_meta M LEFT OUTER JOIN df_job_post J ON 
      M.JOB_ID = J.ID 
      LEFT OUTER JOIN df_register_users R ON 
      R.ID = J.USER_ID 
      WHERE 
      J.STATUS='ACTIVE' AND R.OCCUPATION !='student' AND (M.VALUE = 'Clinical' OR M.VALUE = 'Full Time' group BY J.ID 

或者,如果你真的正在尋找這兩個值,然後就去做:

SELECT J.ID , J.U_POST_ID, 
      J.TITLE,J.CREATION_DATE,J.STATUS, 
      R.FIRST_NAME, R.LAST_NAME,R.CLINICAL_CLINIC_NAME, 
      J.REQUIREMENT,J.STATE,J.CITY,J.DESCRIPTION,J.CALL_DUR,J.USER_ID 
      FROM 
      df_job_meta M LEFT OUTER JOIN df_job_post J ON 
      M.JOB_ID = J.ID 
      LEFT OUTER JOIN df_register_users R ON 
      R.ID = J.USER_ID 
      WHERE 
      J.STATUS='ACTIVE' AND R.OCCUPATION !='student' AND M.VALUE IN ('Clinical','Full Time') group BY J.ID 

您可以像Mysql IN函數中的in_array函數一樣思考Mysql IN函數。

相關問題