1

2 つの select ステートメントの出力を結合しようとしています。各 select ステートメントは 0 または 1 つの出力を返すため、1 つの出力が 0 を返す場合、INNER JOIN は何も返しません。OUTER 結合をどのように行うことができるのか疑問に思っていました。INNER JOIN の解決策を見て、それが機能するようになりましたが、OUTER JOIN に変更すると、次のエラーが発生します。

エラー コード: 1064。SQL 構文にエラーがあります。value3 行目の「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  |
|----|----|

ありがとう

4

1 に答える 1