2015-02-26 37 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条款。