私はSecurity
とSecurityTransactions
の2つのテーブルを持っています。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
だったはずです。それはどうしてそうですか?
編集:
これは正しいですか?なぜですか?
a。グループ別t.SecurityId、S.securityName
b。グループによってt.SecurityId
c。グループによるS.securityName
質問を編集していただきありがとうございました! – PramTal
あなたは 'GROUP BY'について聞いているようです。 MySQLの古いデフォルトの振る舞いは寛容で、 'GROUP BY'には存在しない' SELECT'に列を含めることができますが、ほとんどの他のRDBMSはそのクエリを拒否します。さらに、動作はMySQL 5.7ではデフォルトで_offであるため、これに依存することは推奨されません。また、別のRDMBSに切り替えるときに悪い習慣があることもあります。 http://stackoverflow.com/questions/38907729/mysql-5-7-only-full-group-by –
マイケル、次に正しいクエリは何でしょうか? – PramTal