你好,我有一个表(mysql),在我的查询中,我想只获得大于或等于4的列,但我不知道如何做到这一点
SELECT * FROM my_table WHERE * (all foo columns foo1-foo7) >= 4 AND date = '2015-09-03'
我的表看起来像
id | foo1 | foo2 | foo3 | foo4 | foo5 | foo6 | foo 7 | date
-----------------------------------------------------
1 | 5 | 10 | 8 | 0 | 2 | 4 | 5 | 2015-09-03
2 | 7 | 18 | 0 | 1 | 0 | 5 | 7 | 2015-09-04
所以我的结果应该是
id | foo1 | foo2 | foo3 | foo6 | foo 7 | date
-----------------------------------------------------
1 | 5 | 10 | 8 | 4 | 5 | 2015-09-03
这可能吗?谢谢先进
答案 0 :(得分:0)
更合适的答案(对于RDBMS)是使用两个具有外键关系和约束的表。
MASTER
ID DATE
1 2015-09-03
DETAIL
ID MASTER_ID MYNAME MYVALUE
1 1 tom 5
2 1 bill 10
3 1 kev 8
4 1 bob 0
5 1 other 2
6 1 bleh 4
7 1 snarf 5
然后
SELECT m.id, m.date, d.myvalue FROM master m
INNER JOIN detail d ON m.id = d.master_id
WHERE m.date = '2015-09-03' AND d.myvalue > 4
这会为您提供多行,但如果您愿意,可以使用您的RDBMS的PIVOT功能将其转换为其他内容。
e.g。
SELECT m.id, m.date, d.myvalue FROM master m
INNER JOIN detail d ON m.id = d.master_id
WHERE m.date = '2015-09-03' AND d.myvalue > 4
PIVOT myvalue FOR myname
(sql server语法)你最终得到了
ID date tom bill kev snarf
1 2015-09-03 5 10 8 5
答案 1 :(得分:-2)
试试这个
SELECT * FROM my_table WHERE id >= 4 AND foo1 >=4 AND foo2 >=4 AND date = '2015-09-03'
填写其余的foos,避免同时使用IS和比较运算符。