选择大于?的列?

时间:2015-09-03 08:10:16

标签: php jquery mysql sql sequelpro

你好,我有一个表(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
这可能吗?谢谢先进

2 个答案:

答案 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和比较运算符。