+ -
当前位置:首页 → 问答吧 → MySql 3.51下再求一个查询

MySql 3.51下再求一个查询

时间:2011-06-24

来源:互联网


name mon tues wend thu fri sat sun
aa 1 1 1 0 0 0 0
b 1 1 0 0 0 0 0

现在要求查询结果如下:
id name weekday
1 aa 2
2 aa 3
3 aa 4
4 b 2
5 b 3
weekday就是取周几对应的数

作者: EvilJade   发布时间: 2011-06-24

SQL code
SELECT * FROM (

SELECT NAME,(CASE WHEN mon=1 THEN 2
ELSE '' END
 ) AS WEEKDAY FROM aaa1 GROUP BY NAME
UNION
SELECT NAME,(CASE WHEN tues=1 THEN 3
ELSE '' END
 ) AS WEEKDAY FROM aaa1 GROUP BY NAME
UNION
SELECT NAME,(CASE WHEN wend=1 THEN 4
ELSE '' END
 ) AS WEEKDAY FROM aaa1 GROUP BY NAME
UNION
SELECT NAME,(CASE WHEN thu=1 THEN 5
ELSE '' END
 ) AS WEEKDAY FROM aaa1 GROUP BY NAME
UNION
SELECT NAME,(CASE WHEN fri=1 THEN 6
ELSE '' END
 ) AS WEEKDAY FROM aaa1 GROUP BY NAME
UNION
SELECT NAME,(CASE WHEN sat=1 THEN 7
ELSE '' END
 ) AS WEEKDAY FROM aaa1 GROUP BY NAME
UNION
SELECT NAME,(CASE WHEN sun=1 THEN 1
ELSE '' END
 ) AS WEEKDAY FROM aaa1 GROUP BY NAME

) AS bb WHERE bb.weekday <>''
ORDER BY bb.name 



不知道如何合并。。

作者: mr_mablevi   发布时间: 2011-06-24

不知道3.51是否有WEEKDAY函数
select *,weekday(aweek)+2 from (
select name,mon as aweek from tt
union 
select name,tues from tt
union 
select name,wend from tt
union 
select name,thu from tt
union 
select name,fri from tt
union 
select name,sat from tt
union 
select name,sun from tt) a where aweek<>0

作者: wwwwb   发布时间: 2011-06-24