2015-02-26 94 views
1

該查詢插入從othes表表中的值(它返回超過1行)INSERT,子查詢,價值

INSERT INTO metric_values(mv_db_id, mv_cat_id) 
    (SELECT DISTINCT dbs_id, cat_id FROM 
     (SELECT DISTINCT cat_id, dbs_id FROM categories 
      INNER JOIN users ON (cat_id = us_category_id) 
       INNER JOIN hits ON (us_id = h_user_id) 
       INNER JOIN dbs ON (h_db_id = dbs_id) 
      WHERE h_datetime = '2009-09-28' 
       GROUP BY cat_id, dbs_id)foo) 

但我有一些變量(mv_metric_id,mv_period_id,mv_period_startdate),其值我收到來自程序(c#)。任何人都知道如何在這個查詢中插入這個變量?

事情是這樣的:

INSERT INTO metric_values(mv_metric_id, mv_period_id, mv_period_startdate, mv_db_id, mv_cat_id) 
VALUES (1, 1, '2009-09-28', (SELECT DISTINCT dbs_id, cat_id 
           FROM (SELECT DISTINCT cat_id, dbs_id 
            FROM categories 
            INNER JOIN users ON (cat_id = us_category_id) 
            INNER JOIN hits ON (us_id = h_user_id) 
            INNER JOIN dbs ON (h_db_id = dbs_id) 
            WHERE h_datetime = '2009-09-28' 
            GROUP BY cat_id, dbs_id)foo)) 
+0

請嘗試描述如何處理這些mv_metric_id,mv_period_id,mv_period_startdate變量。 – jarlh

+0

像這樣'INSERT INTO metric_values(mv_metric_id,mv_period_id,mv_period_startdate,mv_db_id,mv_cat_id) VALUES(1,1, '2009-09-28', (SELECT DISTINCT dbs_id,CAT_ID FROM (SELECT DISTINCT CAT_ID,dbs_id FROM類別 INNER JOIN用戶ON(CAT_ID = us_category_id) INNER JOIN命中ON(us_id = h_user_id) INNER JOIN DBS ON(h_db_id = dbs_id) WHERE h_datetime = '2009-09-28' GROUP BY CAT_ID,dbs_id)FOO ))' – Svetlana

回答

0

你可以把自己的價值觀的最SELECT子句中,例如:

INSERT INTO metric_values(mv_metric_id, mv_period_id, mv_period_startdate, mv_db_id, mv_cat_id) 
    (SELECT DISTINCT MYDATA1, MYDATA2, MYDATA3, dbs_id, cat_id FROM 
     (SELECT DISTINCT cat_id, dbs_id FROM categories 
      INNER JOIN users ON (cat_id = us_category_id) 
       INNER JOIN hits ON (us_id = h_user_id) 
       INNER JOIN dbs ON (h_db_id = dbs_id) 
      WHERE h_datetime = '2009-09-28' 
       GROUP BY cat_id, dbs_id)foo) 

當然,這將使整個行DISTINCT所以可能有重新組合你的SELECT條款。