【问题标题】:Mysql - select with condition and input in array?Mysql - 选择条件并输入数组?
【发布时间】:2015-08-20 21:29:44
【问题描述】:

我有这样的桌子

|  idrule  |  idsys  |
----------------------
|R01#1     |     1   |
|R01#1     |     2   |
|R01#2     |     1   |
|R01#2     |     3   |
|R01#2     |     4   |
|R01#3     |     2   |
|R01#3     |     1   |
|R01#3     |     5   |
|R01#4     |     1   |
|R01#4     |     4   |
|R01#4     |     3   |
----------------------

我想在一个输入数组中选择 2 个条件,如果我想输入(idsys = 1 和 idsys = 2),那么输出应该是:

| idrule |
----------
|R01#1   |
|R01#3   |
----------

有人可以帮忙吗?谢谢

-----问题补充----- 这是解决方案:

SELECT idrule
FROM tablename
WHERE idsys IN (1, 2)
GROUP BY idrule
HAVING count(*) = 2

我想在“哪里”条件“MAX(somefield)”中添加它可用?所以代码将是:

SELECT idrule
FROM tablename
WHERE MAX(somefiled) and
idsys IN (1, 2)
GROUP BY idrule
HAVING count(*) = 2

但不工作?任何的想法?

【问题讨论】:

  • 提问时,您应该让我们知道您已经尝试过什么以及出了什么问题。您还应该尝试包含所有相关信息。在这种情况下,我们需要知道表名才能为您编写查询。

标签: mysql base rule


【解决方案1】:

你可以这样做:

SELECT idrule
FROM tablename
WHERE idsys IN (1, 2)
GROUP BY idrule
HAVING count(*) = 2

【讨论】:

  • 谢谢Jhon,我会努力的。
  • @Jhon,谢谢,答案是对的。那就是我的意思是,顺便问一下Jhon,HAVING count(*) = 2是什么意思?...它是输入的长度(idsys IN(1,2))?
  • 是的。如果你运行SELECT * FROM tablename WHERE idsys IN (1, 2),它将显示所有idsys 1或2的idrules。你只需要选择那些条目数等于集合长度(1, 2)的idrules。
【解决方案2】:
SELECT idrule 
    FROM *table* t 
        JOIN *table* ct ON t.idrule = ct.idrule 
    WHERE t.idsys=1 AND ct.idsys=2;

【讨论】:

    猜你喜欢
    • 2017-04-09
    • 2011-10-16
    • 2018-10-15
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多