Mysql 如果另一个值等于

Mysql 如果另一个值等于,mysql,Mysql,我有一个小麻烦来正确的语法为我的代码做我想要的。我总结了一个员工在一周内工作的小时数,但我想从我的查询中排除某些天。员工可以为不同的客户工作,这些客户由客户id定义 下面的代码在paranthese中的WHERE语句中有一个语法错误,我知道为什么,为了解释我想在这种情况下实现什么,我会让它们出现在那里 我很感激你能给我的任何帮助 顺便说一句:我也尝试了AND(DAYOFWEEK(date)7和client_id='1'),但这也不起作用。我确认这是因为我的查询只返回一行结果,因此当查询循环时,我

我有一个小麻烦来正确的语法为我的代码做我想要的。我总结了一个员工在一周内工作的小时数,但我想从我的查询中排除某些天。员工可以为不同的客户工作,这些客户由客户id定义

下面的代码在paranthese中的WHERE语句中有一个语法错误,我知道为什么,为了解释我想在这种情况下实现什么,我会让它们出现在那里

我很感激你能给我的任何帮助

顺便说一句:我也尝试了AND(DAYOFWEEK(date)7和client_id='1'),但这也不起作用。我确认这是因为我的查询只返回一行结果,因此当查询循环时,我上面的代码不会做任何事情

SELECT
    date,
    client_id,
    SUM(hours)-37.5 AS total,
    SUM(lunch = 'yes') AS lunch
FROM
    hours
WHERE
    CONCAT(WEEK(date, 1)) = '25'
AND
    CONCAT(YEAR(date)) = '2015'
AND
    employee_id = '14'
AND ( DAYOFWEEK(date) <> 7 WHERE client_id = '1' )  
AND ( DAYOFWEEK(date) <> 1 WHERE client_id = '2' ) 
AND
    status = 'billed'
HAVING SUM(hours) > 37.5
选择
日期,
客户id,
总计(小时)-37.5小时,
SUM(午餐=‘是’)作为午餐
从…起
小时
哪里
CONCAT(星期(日期,1))=“25”
及
CONCAT(年份(日期))=“2015”
及
员工id='14'
和(DAYOFWEEK(date)7,其中客户id='1')
和(DAYOFWEEK(date)1,其中客户端id='2')
及
状态='账单'
总和(小时数)>37.5

您可以使用一组逻辑
not
逻辑运算符来构建此逻辑:

SELECT
    date,
    client_id,
    SUM(hours)-37.5 AS total,
    SUM(lunch = 'yes') AS lunch
FROM
    hours
WHERE
    CONCAT(WEEK(date, 1)) = '25'
AND
    CONCAT(YEAR(date)) = '2015'
AND
    employee_id = '14'
AND NOT ( DAYOFWEEK(date) = 7 AND client_id = '1' )  
AND NOT ( DAYOFWEEK(date) = 1 AND client_id = '2' ) 
AND
    status = 'billed'
HAVING SUM(hours) > 37.5

您可以使用一组逻辑
not
逻辑运算符来构建此逻辑:

SELECT
    date,
    client_id,
    SUM(hours)-37.5 AS total,
    SUM(lunch = 'yes') AS lunch
FROM
    hours
WHERE
    CONCAT(WEEK(date, 1)) = '25'
AND
    CONCAT(YEAR(date)) = '2015'
AND
    employee_id = '14'
AND NOT ( DAYOFWEEK(date) = 7 AND client_id = '1' )  
AND NOT ( DAYOFWEEK(date) = 1 AND client_id = '2' ) 
AND
    status = 'billed'
HAVING SUM(hours) > 37.5