如何仅选择具有多个给定字段值的行

发布于 2024-10-14 23:16:26 字数 274 浏览 3 评论 0原文

有没有一些优雅的方法来做到这一点,没有一个大的WHERE和大量的ANDOR?例如,有 4 列:A、B、C、D。对于每一行,列都有随机整数值。我只需要选择那些具有多个非零值列的行。例如,应选择 (1,2,3,4) 和 (3,4,0,0),但不应选择 (0,0,7,0)(不存在仅包含零的行)。

附言。我知道这看起来如何,但有趣的是,这不是考试或其他什么,这是一个真正的查询,我需要在真正的应用程序中使用:D

Is there some elegant way to do that, without a big WHERE with lots of AND and OR? For example there are 4 columns: A, B, C, D. For each row the columns have random integer values. I need to select only those rows which have more than one column with a non-zero value. For example (1,2,3,4) and (3,4,0,0) should get selected, however (0,0,7,0) should not be selected (there are no rows that have zeros only).

PS. I know how this looks but the funny thing is that this is not exam or something, it's a real query which I need to use in a real app :D

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

紧拥背影 2024-10-21 23:16:26
SELECT  *
FROM    mytable
WHERE   (0, 0, 0) NOT IN ((a, b, c), (a, b, d), (a, c, d), (b, c, d))

我相信这是最短的方法,尽管不一定是最有效的。

SELECT  *
FROM    mytable
WHERE   (0, 0, 0) NOT IN ((a, b, c), (a, b, d), (a, c, d), (b, c, d))

This I believe is this shortest way, though not necessarily the most efficient.

淡淡の花香 2024-10-21 23:16:26

那里。没有WHERE,没有OR,也没有AND

SELECT
   IF(`column1` != 0,1,0) +
   IF(`column2` != 0,1,0) +
   IF(`column3` != 0,1,0) +
   IF(`column4` != 0,1,0) AS `results_sum`
FROM `table`
HAVING
   `results_sum` > 1

There. No WHERE, no OR and no AND:

SELECT
   IF(`column1` != 0,1,0) +
   IF(`column2` != 0,1,0) +
   IF(`column3` != 0,1,0) +
   IF(`column4` != 0,1,0) AS `results_sum`
FROM `table`
HAVING
   `results_sum` > 1
别想她 2024-10-21 23:16:26

尝试

select *
from table t
where ( abs(sign(A))
      + abs(sign(B))
      + abs(sign(C))
      + abs(sign(D))
      ) > 0

Try

select *
from table t
where ( abs(sign(A))
      + abs(sign(B))
      + abs(sign(C))
      + abs(sign(D))
      ) > 0
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文