1

あるテーブルの行を別のテーブルに挿入しています。このため、次のようなクエリがあります

INSERT INTO table1 
        (id,name,fieldname,address) 
SELECT (SELECT id FROM usertable WHERE name = 'namevalue'),
        name,
       ( SELECT fieldname FROM fielddata WHERE id IN 
         (SELECT id FROM usertable  WHERE name = 'namevalue') ),
       address 
FROM   sourcetable 
WHERE  cond = 'value' 

ここで、上記のクエリでは、次のサブクエリが 2 回繰り返されます。サブクエリを 1 回だけ使用し、値を保持して他の場所で使用する方法はありますか。

SELECT id FROM usertable WHERE name = 'namevalue'

さらに詳細が必要な場合はお知らせください。

4

2 に答える 2

0

これを試して:

INSERT INTO table1 
    (id,name,fieldname,address) 
SELECT sub.id, 
   sub.name,
   ( SELECT fieldname FROM fielddata WHERE id IN sub.id ),
   sub.address
FROM
(
    SELECT (SELECT id FROM usertable WHERE name = 'namevalue') id,
        name,
        address 
    FROM sourcetable 
    WHERE cond = 'value' 
) sub
于 2012-09-13T10:33:24.633 に答える
0

SQL 結合について学習します。

INSERT INTO table1 (id, name, fieldname, address)
SELECT usertable.id,
       sourcetable.name,
       fielddata.fieldname,
       sourcetable.address
FROM   sourcetable
  JOIN usertable ON sourcetable.cond = 'value'
                AND usertable.name = 'namevalue'
  LEFT JOIN fielddata ON fielddata.id = usertable.id
于 2012-09-13T12:33:14.343 に答える