2 つの select ステートメントの出力を結合しようとしています。各 select ステートメントは 0 または 1 つの出力を返すため、1 つの出力が 0 を返す場合、INNER JOIN は何も返しません。OUTER 結合をどのように行うことができるのか疑問に思っていました。INNER JOIN の解決策を見て、それが機能するようになりましたが、OUTER JOIN に変更すると、次のエラーが発生します。
エラー コード: 1064。SQL 構文にエラーがあります。value
3 行目の「OUTER JOIN (SELECT FROM server_setting WHERE server_id=1 AND server_sett」の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
クエリは次のとおりです。
SELECT * FROM
(SELECT `value` AS url FROM server_setting WHERE server_id=1 AND server_setting_type_id=(SELECT min(id) FROM server_setting_type WHERE type='url')) AS t1
FULL OUTER JOIN
(SELECT `value` AS port FROM server_setting WHERE server_id=1 AND server_setting_type_id=(SELECT min(id) FROM server_setting_type WHERE type='port')) AS t2
;
サンプル入力:
server_setting テーブル:
|---------|----------------------|-----|
|server_id|server_setting_type_id|value|
|---------|----------------------|-----|
|1 |1 |http |
|1 |2 |22 |
|---------|----------------------|-----|
server_setting_type テーブル:
|--|----|
|id|type|
|--|----|
|1 |url |
|2 |port|
|--|----|
結果:
|----|----|
|url |port|
|----|----|
|http|22 |
|----|----|
ありがとう