2015-01-21 20 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函数。

相关问题