Mysql使用情况“;作为「;

Mysql使用情况“;作为「;,mysql,Mysql,我是一名网络开发人员,我曾经面对过这个问题。。。 我正在使用php和mysql开发统计web应用程序部件 SELECT IF (cat1 = "S4", 1, 0) AS ncat1, IF (cat2 = "S4", 1, 0) AS ncat2, IF (cat3 = "S4", 1, 0) AS ncat3, IF (cat4 = "S4", 1, 0) AS ncat4, (ncat1 +

我是一名网络开发人员,我曾经面对过这个问题。。。 我正在使用php和mysql开发统计web应用程序部件

SELECT
  IF (cat1 = "S4", 1, 0) AS ncat1,
  IF (cat2 = "S4", 1, 0) AS ncat2,
  IF (cat3 = "S4", 1, 0) AS ncat3,
  IF (cat4 = "S4", 1, 0) AS ncat4,
  (ncat1 + ncat2 + ncat3 + ncat4) AS ntotal
FROM
  users
我想用这种格式得到ntotal。但它不起作用,未知列ncat1 因此,我认为fullstack开发人员可以帮助我更轻松、更快速地完成任务 请帮帮我。。。。
谢谢…

您的
ncat1
和其他列名不在您的
(ncat1+ncat2+ncat3+ncat4)作为ntotal
行的范围内。所以你不能在那里提到他们

尝试使用子查询将它们引入范围,如下所示:

SELECT *, (ncat1 + ncat2 + ncat3 + ncat4) AS ntotal
  FROM (
      SELECT
         IF (cat1 = "S4", 1, 0) AS ncat1,
         IF (cat2 = "S4", 1, 0) AS ncat2,
         IF (cat3 = "S4", 1, 0) AS ncat3,
         IF (cat4 = "S4", 1, 0) AS ncat4
     FROM coursered
      ) subquery
您的别名(即
ncat1
)无法在SQL语句中使用

我将使用一个简单的子查询来解决此问题:

SELECT  ncat1, ncat2, ncat3, ncat4,
        (ncat1 + ncat2 + ncat3 + ncat4) AS ntotal
  FROM  (
        SELECT
          IF (cat1 = "S4", 1, 0) AS ncat1,
          IF (cat2 = "S4", 1, 0) AS ncat2,
          IF (cat3 = "S4", 1, 0) AS ncat3,
          IF (cat4 = "S4", 1, 0) AS ncat4
        FROM
          users
        ) a

欢迎来到堆栈溢出。恕我直言,“不起作用”是指没有足够的信息来帮助您或我们找出问题所在。错误消息是您的朋友!ncat1-ncat4在计算ntotal时不可用,您可以重复所有ifsHow我可以重复吗?您可以共享表结构吗?…cate1 cate2 cate3 cate4。。。