-5

您好,我有一个表(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

这可能吗?先谢谢了

4

2 回答 2

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 函数将其转换为其他内容。

例如

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
于 2015-09-03T08:24:26.323 回答
-2

尝试这个

SELECT * FROM my_table WHERE id >= 4 AND foo1 >=4 AND foo2 >=4 AND date = '2015-09-03'

填充其余的 foo,避免同时使用 IS 和比较运算符。

于 2015-09-03T08:17:02.550 回答