Получить все строки с одинаковым значением в столбце

0
SELECT auction_id, account_no, branch_address
FROM Table1
LEFT JOIN Table2 ON Table1.'aul_id' = Table2.'aul_id'
WHERE Table2.'date' = '2018-03-20'
GROUP BY Table1.'branch_address'
HAVING Count(*) >= '10' AND Count(*) <= '10'

Но это возвращает только 1 запись каждого, где он должен возвращать 10

  • 1
    То же самое, что HAVING Count(*) = '10' ...
  • 1
    Эта группа недействительна. Не будет выполняться на более новых версиях MySQL (если только не в режиме совместимости), может привести к непредсказуемым результатам с более старыми версиями MySQL. Общее правило GROUP BY гласит: если указано предложение GROUP BY, каждая ссылка на столбец в списке SELECT должна либо идентифицировать столбец группировки, либо быть аргументом функции set!
Показать ещё 6 комментариев
Теги:

2 ответа

1
SELECT
   auction_id,
   account_no,
   branch_address 
FROM
   Table1 
   LEFT JOIN
      Table2 
      ON Table1.'aul_id' = Table2.'aul_id' 
WHERE
   Table2.'date' = '2018-03-20' 
   AND Table1.'branch_address' IN 
   (
      SELECT
         Table1.'branch_address' 
      FROM
         Table1 
         LEFT JOIN
            Table2 
            ON Table1.'aul_id' = Table2.'aul_id' 
      WHERE
         Table2.'date' = '2018-03-20' 
      GROUP BY
         Table1.'branch_address' 
      HAVING
         Count(*) >= '10' 
         AND Count(*) <= '10' 
   )
  • 1
    Count(*) >= '10' AND Count(*) <= '10' может быть Count(*) = '10'
0

Попробуйте запустить запрос без предложения и проверьте значение count (*).

Вы получите ответ. Пример запроса оракула был добавлен ниже.

------------------------------------------КОД------- ------------------------

create table table1(branchaddress varchar2(10), aul_id number);
insert into table1 values('address1', 10);
insert into table1 values('address1', 10);
insert into table1 values('address2', 10);
insert into table1 values('address2', 10);
create table table2(branchaddress varchar2(10),aul_id number );
insert into table2 values('address1', 10);
insert into table2 values('address2', 10);

commit;

SELECT table1.branchaddress, count(*)
FROM Table1, table2
where Table1.branchaddress = Table2.branchaddress(+)
GROUP BY Table1.branchaddress
HAVING Count(*) >= 2 AND Count(*) <= 10

Ещё вопросы

Сообщество Overcoder
Наверх
Меню