是否可以使用另一个连接中的列在另一个连接mysql中创建条件

时间:2015-09-08 06:25:29

标签: php mysql

我将进行编辑,因此不会将其归类为副本。

我想将XA.XA_REASON_CODE用于类似语句的条件,以确定我是否会使用某个条件。

如果XA.XA_REASON_CODE = EH,那么我将不会使用AND HOLDFLAG != 'R'。否则在我加入的条件中使用AND HOLDFLAG != 'R'

SELECT
 I.DATERELEASED,
 XA .XA_REASON_CODE,
FROM
    FEPC.EWHITEBOARD AS EWB
LEFT JOIN FEPC.EWHITEBOARD_XA XA ON EWB.EWHITEBOARD_ID = XA .EWHITEBOARD_ID
LEFT JOIN(
    SELECT
        DATERELEASED
    FROM
        HOURLY_FT_WIP.CACHE_IRAC_HOLD_LOTS
    WHERE
        LOTNUM IN(
            'SAKZ3A024B',
            'JS61DA009G'
        )
if(XA.XA_REASON_CDOE = 'EH') THEN
    #nothing
else then
AND HOLDFLAG != 'R'
    )AS I ON I.LOTNUM = PRODUCTIONORDERID

4 个答案:

答案 0 :(得分:0)

您可以使用逻辑andor运算符的组合来实现此行为:

SELECT
    LASTNAME, FIRSTNAME, SEX, AGE, CODE
FROM
    tblInfo
WHERE
    AGE > 20 AND 
    ((SEX = 'M' AND CODE = 'X') OR (SEX != 'M' AND CODE = 'Y'))

答案 1 :(得分:0)

是的,可以使用CASE

SELECT
        LASTNAME, FIRSTNAME, SEX, AGE, CODE
    FROM
        tblInfo
    WHERE
        AGE > 20

AND CODE = CASE WHEN SEX = 'M' THEN 'X' ELSE 'Y' END

答案 2 :(得分:0)

您可以使用bind-parameters。 从PHP代码传递变量的值 在PHP代码中,只需使用if-else

确定变量值

答案 3 :(得分:0)

SELECT
  LASTNAME, FIRSTNAME, SEX, AGE, CODE
FROM
  tblInfo
 WHERE
  AGE > 20
  AND CASE WHEN SEX = 'M' THEN CODE = 'X' ELSE CODE = 'Y' END