MySQL: выбор групп только с определенными значениями

Поскольку вы меняете .className blockSet, который является HTMLCollection . Коллекция, которая имеет элементы с одним и тем же классом (block-default), изменится, когда элементы будут испытывать некоторые обновления.

Другими словами, когда вы меняете .className элемента, коллекция исключает этот элемент. Это означает, что размер HTMLCollection уменьшится. Также размер будет увеличиваться, если элемент с этим классом добавлен в DOM.

Чтобы решить эту проблему, вы всегда можете изменить только первый элемент .className.

for(var i = 0; i

Примечания: Integer для изменения элемента класса по элементу, вы можете перебирать элементы с помощью for и изменять .className.

var blockSet = document.getElementsByClassName("block-default");
var blockSetLength = blockSet.length;

console.log(blockSet);

for(var i = 0; i
.block-default {
    width: 100px;
    height:50px;
    background-color: green;
    border: 1px solid red;
    padding:10px;
}

.block-selected {
    width: 100px;
    height:50px;
    background-color: blue;
    border: 1px solid white;
    padding:10px;
 }
BLOCK1
BLOCK2
BLOCK3
BLOCK4
BLOCK5
BLOCK6
BLOCK7
BLOCK8

Если вы добавите новый элемент в DOM (а не в коллекцию), размер увеличится, как показано в примере ниже.

var blockSet = document.getElementsByClassName("block-default");
var blockSetLength = blockSet.length;

alert("Current size: " + blockSet.length);
document.body.innerHTML += '
BLOCK9
'; alert("After adding an element in DOM size: " + blockSet.length);
.block-default {
    width: 100px;
    height:50px;
    background-color: green;
    border: 1px solid red;
    padding:10px;
}

.block-selected {
    width: 100px;
    height:50px;
    background-color: blue;
    border: 1px solid white;
    padding:10px;
 }
BLOCK1
BLOCK2
BLOCK3
BLOCK4
BLOCK5
BLOCK6
BLOCK7
BLOCK8

1
задан Accountant م 13 July 2018 в 20:36
поделиться

1 ответ

Вы можете использовать group by и having для идентификации групп:

select f_name
from t
group by f_name
having sum( (Type1 = 1) ) > 0 and
       sum( (Type1 = 2) ) > 0 and
       sum( (Type1 in (1, 2) ) = count(*);

Каждое условие в предложении having подсчитывает количество строк, соответствующих условию. В > 0 говорится, что есть хотя бы одна строка. = count(*) говорит, что все строки соответствуют.

1
ответ дан Gordon Linoff 17 August 2018 в 12:09
поделиться
  • 1
    Не уверен, что я делаю что-то не так с моим кодом, он просто идентифицирует группы со значениями 1 и 2. Аналогично тому, как я использовал предложение NOT IN. – Hao Yang 13 July 2018 в 21:17
  • 2
    @HaoYang. , , Третье условие должно ограничивать значения только «1». и "2". – Gordon Linoff 14 July 2018 в 02:08
Другие вопросы по тегам:

Похожие вопросы: