简体   繁体   English

我们可以在SQL查询中多次使用相同的列名吗

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

I want to use same column multiple in same query example 6 times in query how to do this to get result ? 我想在同一查询示例中多次使用同一列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

MY TABLE STRUCTURE IS LIKE THIS 我的桌子结构就像这样

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

I think you have this trouble: 我认为您有这个麻烦:

In your query you have add a WHERE clause like this: 在查询中,您需要添加一个WHERE子句,如下所示:

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

This condition is always FALSE. 此条件始终为FALSE。

You must collapse your condition in: 您必须在以下条件中折叠条件:

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

About use of a column multiple: If you want to add in your SELECT field list the same column, you must use alias like this: 关于多列使用:如果要在SELECT字段列表中添加同一列,则必须使用如下别名:

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

If you want to use the same column in a WHERE condition there's no problem but pay attention to relational operator you use 如果要在WHERE条件下使用同一列,那没有问题,但是请注意使用的关系运算符

EDIT 编辑

A further explanation about M.VALUE by an example: 通过示例进一步说明M.VALUE:

Suppose you have a table named Person . 假设您有一个名为Person的表。

You have a column named sex where you have value F about FEMAIL and M about MALE. 您有一个名为sex的列,其中关于FEMAIL的值为F,关于MALE的值为M。

So if you write this query: 因此,如果您编写此查询:

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

you have 0 rows affected 您有0行受影响

but if you write this query: 但是,如果您编写此查询:

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

or equivalent 或同等学历

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

you have all rows in your table 您的表中有所有行

Since you only have one value in your use of the IN function you can replace that with equals and use or with the use of parenthesis - also group by is not ASC or DESC that is for orderby - try: 由于使用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

Or if you really are looking for both values then just do: 或者,如果您确实在寻找这两个值,则只需执行以下操作:

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

You can think of the Mysql IN function like PHP's in_array function. 您可以将Mysql IN函数视为PHP的in_array函数。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM