我们可以在 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 的列,其中的值 F 关于 FEMAIL 和 M 关于 MALE。

因此,如果您编写此查询:

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 并使用或使用括号 - 分组依据不是用于排序的 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函数。