У меня есть 2 стола, Security
и SecurityTransactions
.Группа по запросу в sql
Security
:
create table security(SecurityId int, SecurityName varchar(50));
insert into security values(1,'apple');
insert into security values(2,'google');
insert into security values(3,'ibm');
SecurityTable
:
create table SecurityTransactions(SecurityId int, Buy_sell boolean, Quantity int);
insert into securitytransactions values (1 , false, 100);
insert into securitytransactions values (1 , true, 20);
insert into securitytransactions values (1 , false, 50);
insert into securitytransactions values (2 , false, 120);
Я не хочу, чтобы узнать имя безопасности, и это не появления в SecurityTransactions
.
Ответ ниже:
SecurityName | Appearance apple | 3 google | 1
я написал ниже SQL-запрос:
select S.SecurityName, count(t.securityID) as Appearance
from security S inner join securitytransactions t on S.SecurityId = t.SecurityId
group by t.SecurityId, S.SecurityName;
этот запрос дал мне желаемый результат, но это было до сих пор отвергается человеком, говоря группу, должно быть s.securityName
. почему это так ?
EDIT:
Какой из них вам это правильно и почему?
a. группа по t.SecurityId, S.securityName
b. группа по t.SecurityId
c. group by S.securityName
Thanks Willem для редактирования вопроса! – PramTal
Похоже, вы спрашиваете о 'GROUP BY'. Старое поведение MySQL по умолчанию является мягким и позволяет включать столбцы в 'SELECT', отсутствующие в' GROUP BY', но большинство других СУБД отклонят этот запрос. Кроме того, по-умолчанию поведение _off по-умолчанию_ в MySQL 5.7, поэтому не рекомендуется полагаться на него, и иметь плохую привычку при переключении на другой RDMBS. http://stackoverflow.com/questions/38907729/mysql-5-7-only-full-group-by –
Майкл, что тогда будет правильным вопросом? – PramTal