2014-12-04 45 views
0

我当前的SQL语句是MySQL的 - 使用ABS()和与应用的标签 “AS”

"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... 
单个标签

这可能吗?

+0

什么会的标签呢?你的意思是你想要每个项目的列和总数? – IMSoP 2014-12-04 22:13:49

+0

你不能只是做一些像“SELECT ID,ABS(tvshows- $ tvshows)AS totaltvshows,...,totaltvshows + ... FROM? – marcosh 2014-12-04 22:16:09

回答

2

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

SELECT 1 AS一个+ 2两个

,不知何故期待MySQL来把它转换成两个独立的字段/列。不,它不会那样做。你在做加法。您将返回一个列与您的添加结果,您可以别名该结果。

SELECT (1 + 2) AS result 

会工作

如果你想各个组件,然后将它们写出来:

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