簡體   English   中英

我們可以在SQL查詢中多次使用相同的列名嗎

[英]Can we use same column name multiple time in sql query

我想在同一查詢示例中多次使用同一列6次以獲取結果?

            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

我認為您有這個麻煩:

在查詢中,您需要添加一個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條件下使用同一列,那沒有問題,但是請注意使用的關系運算符

編輯

通過示例進一步說明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'

您的表中有所有行

由於使用IN函數時只有一個值,因此可以將其替換為equals並使用或使用括號-並且group by不是用於orderby的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函數視為PHP的in_array函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM