关于我的脚本,为什么我不能使用where子句到子查询counter ='1'

时间:2017-08-04 08:58:57

标签: mysql sql

我有关于我的脚本的问题,为什么我不能在子查询中使用where子句(其中counter ='1')

我在这里有一个示例请打开图片sample screen to my script

SELECT effectiveDate,


  (SELECT

  (CASE
    WHEN note='REGULAR LOGGED'
    THEN log
    WHEN description = description
    THEN description
  END)

  FROM timesheet WHERE counter ='1'

  ) as Counter1


FROM  schedules t1 LEFT JOIN timesheet t2 ON t1.empid = t2.empid AND t1.effectiveDate = t2.date
                   LEFT JOIN holidays t3 ON t1.effectiveDate = t3.date WHERE t1.empid ='40'
                   AND YEAR(t1.effectiveDate) = YEAR(CURDATE()) AND MONTH(t1.effectiveDate) = '1' GROUP BY t1.effectiveDate

2 个答案:

答案 0 :(得分:0)

首先,你的照片不是样本;它只是你的查询,但是在截图中。

其次,您的答案实际上就在图片中:错误消息表明您的子查询返回多行。实际上,如果在select语句中使用子查询,那么该查询显然应该只返回一行。

答案 1 :(得分:0)

简短回答

使用不同分组案例陈述。

应该是这样的:

SELECT DISTINCT CASE WHEN .... END FROM TABLE WHERE

不推荐使用像这样的subquerys,在select语句中逐行评估的成本可能会很大。

提示:尝试改进您的表格结构。