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

Php 我们可以在sql查询中多次使用相同的列名吗,php,mysql,Php,Mysql,我想在同一个查询示例中多次使用同一列 查询如何执行此操作以获得结果 我的桌子结构是这样的 JOB_ID |META_KEY | VALUE 1 | work_hour | Full Time 1 | profile | Clinical 1 | pay_scale | Sharing 由于在使用in函数时只有一个值,因此可以使用equals and use或括号替换该值-group by不是o

我想在同一个查询示例中多次使用同一列 查询如何执行此操作以获得结果

我的桌子结构是这样的

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

由于在使用in函数时只有一个值,因此可以使用equals and use或括号替换该值-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_数组函数。

因为您在使用IN函数时只有一个值,您可以用equals和use或括号替换它-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_数组函数。

我认为您遇到了以下问题:

在查询中,您添加了一个WHERE子句,如下所示:

M.VALUE IN ('Clinical') AND M.VALUE IN ('Full Time') 
SELECT J.id as ID1, J.id as ID2 and so on...
这个条件总是错误的

您必须在以下情况下崩溃:

M.VALUE IN ('Clinical', 'Full Time')
关于使用多列:如果要在“选择字段”列表中添加同一列,必须使用别名,如下所示:

M.VALUE IN ('Clinical') AND M.VALUE IN ('Full Time') 
SELECT J.id as ID1, J.id as ID2 and so on...
如果您想在WHERE条件中使用相同的列,没有问题,但是请注意您使用的关系运算符

编辑

关于M.VALUE的进一步解释通过一个例子:

假设您有一个名为
Person
的表

您有一个名为
sex
的列,其中F值表示女性,M值表示男性

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

SELECT * FROM Person WHERE sex = 'F' and sex = 'M'
SELECT * FROM Person WHERE sex IN ('F', 'M') 
您有0行受影响

但如果您编写此查询:

SELECT * FROM Person WHERE sex = 'F' and sex = 'M'
SELECT * FROM Person WHERE sex IN ('F', 'M') 
或同等品

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

您的表中有所有行

我想您遇到了以下问题:

在查询中,您添加了一个WHERE子句,如下所示:

M.VALUE IN ('Clinical') AND M.VALUE IN ('Full Time') 
SELECT J.id as ID1, J.id as ID2 and so on...
这个条件总是错误的

您必须在以下情况下崩溃:

M.VALUE IN ('Clinical', 'Full Time')
关于使用多列:如果要在“选择字段”列表中添加同一列,必须使用别名,如下所示:

M.VALUE IN ('Clinical') AND M.VALUE IN ('Full Time') 
SELECT J.id as ID1, J.id as ID2 and so on...
如果您想在WHERE条件中使用相同的列,没有问题,但是请注意您使用的关系运算符

编辑

关于M.VALUE的进一步解释通过一个例子:

假设您有一个名为
Person
的表

您有一个名为
sex
的列,其中F值表示女性,M值表示男性

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

SELECT * FROM Person WHERE sex = 'F' and sex = 'M'
SELECT * FROM Person WHERE sex IN ('F', 'M') 
您有0行受影响

但如果您编写此查询:

SELECT * FROM Person WHERE sex = 'F' and sex = 'M'
SELECT * FROM Person WHERE sex IN ('F', 'M') 
或同等品

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

您的表中有所有行

您尝试过这个吗?如果尝试过,您有任何错误吗?请使用别名,例如
选择J.ID作为J\u ID,选择R.ID作为R\u ID,…。
是,我有错误。什么是解决方案。张贴错误。2.“临床”中的M.VALUE和“全职”中的M.VALUE始终不返回任何内容。3.要在“选择字段”列表中放置的同一字段?如果是,请使用别名抱歉!错误意味着我得到了空白页。如果我在mysql中运行这个查询,它将一无所获。你尝试过这个吗?如果尝试过,您有任何错误吗?请使用别名,例如
选择J.ID作为J\u ID,选择R.ID作为R\u ID,…。
是,我有错误。什么是解决方案。张贴错误。2.“临床”中的M.VALUE和“全职”中的M.VALUE始终不返回任何内容。3.要在“选择字段”列表中放置的同一字段?如果是,请使用别名抱歉!错误意味着我得到了空白页。如果我在mysql中运行这个查询,它不会获取任何内容