MySQLでCROSSJOINを正しく適用するにはどうすればよいですか?
MySQLのCROSSJOINは、結合されたテーブルから行のデカルト積を返します。テーブルを作成して例を見てみましょう-
mysql> create table PairDemo -> ( -> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> UserName varchar(20), -> UserRelationshipName varchar(20) -> ); Query OK, 0 rows affected (0.56 sec)
例
挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。クエリは次のとおりです-
mysql> insert into PairDemo(UserName,UserRelationshipName) values('John','James'); Query OK, 1 row affected (0.15 sec) mysql> insert into PairDemo(UserName,UserRelationshipName) values('Carol','James'); Query OK, 1 row affected (0.20 sec) mysql> insert into PairDemo(UserName,UserRelationshipName) values('Carol','David'); Query OK, 1 row affected (0.25 sec) mysql> insert into PairDemo(UserName,UserRelationshipName) values('Sam','David'); Query OK, 1 row affected (0.19 sec)
selectステートメントを使用して、テーブルのすべてのレコードを表示します。クエリは次のとおりです-
mysql> select *from PairDemo;
出力
+--------+----------+----------------------+ | UserId | UserName | UserRelationshipName | +--------+----------+----------------------+ | 1 | John | James | | 2 | Carol | James | | 3 | Carol | David | | 4 | Sam | David | +--------+----------+----------------------+ 4 rows in set (0.00 sec)
以下は、CROSSJOIN-
を適用するためのクエリです。mysql> SELECT U.UserName, UR.UserRelationshipName -> FROM ( -> (SELECT DISTINCT UserName from PairDemo) U -> CROSS JOIN -> (SELECT DISTINCT UserRelationshipName from PairDemo) UR -> ) WHERE NOT EXISTS ( -> SELECT * FROM PairDemo tbl -> WHERE tbl.UserName = U.UserName -> AND tbl.UserRelationshipName = UR.UserRelationshipName -> ) ;
CROSSJOIN-
を実装した上記のクエリの結果を表示する出力は次のとおりです。+----------+----------------------+ | UserName | UserRelationshipName | +----------+----------------------+ | Sam | James | | John | David | +----------+----------------------+ 2 rows in set (0.03 sec)
-
MySQLストアドプロシージャに条件を正しく実装するにはどうすればよいですか?
ストアドプロシージャで条件を設定するには、次の構文を使用します- if yourCondition then yourStatement1; else yourStatement2'; end if ; end // ストアドプロシージャで欠落しているセミコロンを修正するために、上記の構文を実装しましょう- mysql> delimiter // mysql>
-
MySQLストアドプロシージャでDELIMITERを正しく使用するにはどうすればよいですか?
正しい方法は次のとおりです- DELIMITER // CREATE PROCEDURE yourStoredProcedureName() BEGIN IF yourCondition then yourStatement1 ; else yourStatement2 ; END IF ; END // DELIMITER ; ここで例を見て、ストアドプロシージャを作成しましょう- mysql> DELIMITER // mysql> CREATE PROCEDURE delimit