課題の質問がありました:
Find the celebs that have been in relationship with the same celeb.
The result should be (celeb1, celeb2, celeb3) triples,
meaning that celeb1 and celeb2 have been in relationship with celeb3.
これで、テーブル「Relationships」にceleb1フィールドとceleb2フィールドがあります。値はVARCHARです。
この問題に対する私の解決策は次のとおりです。
CREATE VIEW Celeb1Rels AS
SELECT celeb1 AS c1, celeb2 AS c2 FROM relationships;
CREATE VIEW Celeb2Rels AS
SELECT celeb1 AS c2, celeb2 AS c3 FROM relationships;
SELECT * FROM Celeb1Rels NATURAL JOIN Celeb2Rels;
そしてそれはうまくいきます。しかし、インストラクターは彼の解決策を投稿し、彼は持っていました:
SELECT X.celeb1, Y.celeb1, X.celeb2
FROM Relationships X, Relationships Y
WHERE X.celeb2=Y.celeb2 AND X.celeb1<Y.celeb1;
彼がX.celeb1<Y.celeb1を使用している理由がわかりません。これは機能し、正しい出力を提供しますが、数値の比較に「<」が使用されていると思いましたか?
この場合、「<」が何をしているのか誰かが説明できますか?VARCHARSを比較するときの動作は?