h*********n 发帖数: 915 | 1 【 以下文字转载自 JobHunting 讨论区 】
发信人: heavyburden (nothing), 信区: JobHunting
标 题: 请教SQL问题
发信站: BBS 未名空间站 (Fri Mar 16 01:51:59 2012, 美东)
有一个表T,主键名A,是整型id,数据栏名D,是枚举型,红黄蓝三种可能。
现在想做一个查询,判断表里是不是所有数据都是红色。
下面两个查询可以完成任务:
x = db_query("select count(*) from T");
y = db_query("select count(*) from T where D = 'RED'");
return (x==y);
如果用一次查询怎么搞定? |
F**e 发帖数: 593 | 2 x = db_query("SELECT SUM( IF (D='RED', 0, 1) ) AS num_none_red");
return (x == 0);
【在 h*********n 的大作中提到】 : 【 以下文字转载自 JobHunting 讨论区 】 : 发信人: heavyburden (nothing), 信区: JobHunting : 标 题: 请教SQL问题 : 发信站: BBS 未名空间站 (Fri Mar 16 01:51:59 2012, 美东) : 有一个表T,主键名A,是整型id,数据栏名D,是枚举型,红黄蓝三种可能。 : 现在想做一个查询,判断表里是不是所有数据都是红色。 : 下面两个查询可以完成任务: : x = db_query("select count(*) from T"); : y = db_query("select count(*) from T where D = 'RED'"); : return (x==y);
|
a**y 发帖数: 335 | 3 'RED' = all(select D from T)
works in TSQL |
g*s 发帖数: 2277 | 4 直接count就完了,干嘛搞这么复杂
x = db_query("select count(1) from T where D != 'RED'");
return (x == 0);
【在 F**e 的大作中提到】 : x = db_query("SELECT SUM( IF (D='RED', 0, 1) ) AS num_none_red"); : return (x == 0);
|
h*********n 发帖数: 915 | 5 嗯,不过不用count,用limit 1效率更高吧。
【在 g*s 的大作中提到】 : 直接count就完了,干嘛搞这么复杂 : x = db_query("select count(1) from T where D != 'RED'"); : return (x == 0);
|
F**e 发帖数: 593 | 6 man, you ruined it. I was trying to show off my SQL skill, haha.
【在 g*s 的大作中提到】 : 直接count就完了,干嘛搞这么复杂 : x = db_query("select count(1) from T where D != 'RED'"); : return (x == 0);
|
h*********n 发帖数: 915 | 7 学习了。
【在 F**e 的大作中提到】 : man, you ruined it. I was trying to show off my SQL skill, haha.
|