mysql - 使用 ABS() 并应用带有 "AS"的标签

标签 mysql

我当前的sql语句是

"SELECT ID,ABS(tvshows-$tvshows) + ABS(actionandadventure-$actionandadventure) + ABS(anime-$anime) + ABS(childrenandfamily-$childrenandfamily) + ABS(classics-$classics) + ABS(comidies-$comidies) + ABS(cultmovies-$cultmovies) + ABS(documentaries-$documentaries) + ABS(dramas-$dramas) + ABS(faith-$faith) + ABS(foreign1-$foreign1) + ABS(gay-$gay) + ABS(horror-$horror) + ABS(independent-$independent) + ABS(music-$music) + ABS(musicals-$musicals) + ABS(independent-$independent) + ABS(music-$music) + ABS(musicals-$musicals) + ABS(romance-$romance) + ABS(scifi-$scifi) + ABS(sports-$sports) + ABS(thrillers-$thrillers) as total FROM accounts WHERE ID != '$ID' ORDER BY total ASC LIMIT 20

我想做的是为每个 ABS 都有一个单独的标签,例如

"SELECT ID,ABS(tvshows-$tvshows) AS totaltvshows + ABS(actionandadventure-$actionandadventure) AS totalactionandadventure + etc...

这可能吗?

最佳答案

不可能。您不能为表达式的子组件添加别名。例如你正在尝试做相当于:

选择 1 作为一 + 2 作为二

并以某种方式期望 mysql 将其转换为两个单独的字段/列。不,它不会那样做。你正在做加法。您将返回ONE列,其中包含添加结果,并且您可以为该结果指定别名。

SELECT (1 + 2) AS result

可以工作

如果您想要各个组件,请将它们写出来:

SELECT ABS(a+b) AS part1, ABS(c+d) AS part2, ABS(a+b) + ABS(c+d) AS result

关于mysql - 使用 ABS() 并应用带有 "AS"的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27305127/

相关文章:

mysql - 从多个行和列中选择唯一值作为单个列表值

mysql - 为什么 OdbcDataReader 需要实时连接

mySQL 索引建议软件

MYSQL:存储过程未正确执行带有 'IN' 子句的查询

mysql - 使用字符串主键对 mysql 表进行多线程插入和更新的最佳方法?

php - WordPress/MySQL 子查询问题

java - 如何从另一台计算机连接到sql server

mysql - 选择两个表的差异

java - JAVA 形式的 SQL 语法 getText();

php - 在 php 和 mysql 中使用 Session 登录