6

MySQL SELECT JOIN の結果を PHP で評価するときに、テーブル名を使用してネストされた配列を作成します。ただし、計算列の AS を使用する場合、意図したとおりにテーブル名を設定できないようです (簡略化するために、この例では JOIN なしで試していますが、問題は同じです)。

SELECT `field1`, `field2`, "Test" AS `Table`.`field3` FROM `Test`;

これはエラーをスローします。

field3 を関連付けるテーブルを SQL で指定するにはどうすればよいですか?

(テーブル名$pdoStatement->getColumnMeta()が「テーブル」になる)

4

2 に答える 2

11

文字列リテラルを出力列として宣言するには、TableオフのままにしてTest. 列エイリアスによってのみアクセスされるため、結合内のテーブルに関連付ける必要はありません。のようなメタデータ関数を使用する場合、テーブルに関連付けられていないgetColumnMeta()ため、テーブル名は空の文字列になります。

SELECT
  `field1`, 
  `field2`, 
  'Test' AS `field3` 
FROM `Test`;

注: 上記では一重引用符を使用しています。通常、MySQL は文字列の二重引用符を受け入れるように構成されていますが、単一引用符は RDBMS 間でより広く移植できます。

リテラル値を持つテーブル エイリアス名が必要な場合は、使用するテーブルと同じ名前のサブクエリでラップする必要があります。

SELECT
  field1,
  field2,
  field3
FROM 
  /* subquery wraps all fields to put the literal inside a table */
  (SELECT field1, field2, 'Test' AS field3 FROM Test) AS Test

field3として出力されますTest.field3

于 2012-08-26T18:03:42.933 に答える
1

SELECT field1, field2, 'テスト' AS field3FROM Test; // 単純な引用符に置き換えます '

于 2012-08-26T18:04:33.817 に答える