1)使用はonとまったく同じではありませんが、両方のテーブルに結合している同じ名前の列がある場合の省略形です...参照:http://www.java2s.com/Tutorial/MySQL/0100__Table -Join/The キーワード USING は、tableJoins.htm 中の ON キーワードの代わりに使用できます。
私の意見では読みにくいので、結合を綴ります。
3) このクエリからは明確ではありませんが、そうではないと思います。
2)他のテーブルを介して参加していると仮定すると(すべてが会社に直接参加しているわけではありません)、このクエリの順序は重要です...以下の比較を参照してください:
オリジナル:
SELECT c.*
FROM companies AS c
JOIN users AS u USING(companyid)
JOIN jobs AS j USING(userid)
JOIN useraccounts AS us USING(userid)
WHERE j.jobid = 123
私が示唆していると思われること:
SELECT c.*
FROM companies AS c
JOIN users AS u on u.companyid = c.companyid
JOIN jobs AS j on j.userid = u.userid
JOIN useraccounts AS us on us.userid = u.userid
WHERE j.jobid = 123
ここで、ジョブとユーザーアカウントに参加する回線を切り替えることができます。
すべてが会社に参加した場合、次のようになります。
SELECT c.*
FROM companies AS c
JOIN users AS u on u.companyid = c.companyid
JOIN jobs AS j on j.userid = c.userid
JOIN useraccounts AS us on us.userid = c.userid
WHERE j.jobid = 123
これは論理的に意味がありません...各ユーザーが独自の会社を持っている場合を除きます。
4.) SQL の魔法は、特定の列のみを表示できることですが、それらはすべて並べ替えとフィルタリング用です...
戻ってきたら
SELECT c.*, j.jobid....
何をフィルタリングしているのかははっきりとわかりますが、データベースサーバーは、行を出力するかどうかを気にしません。