2017-06-20 20 views
1

我運行下面的命令:BigQuery中,SQL更新命令,錯誤:產生標量子查詢多於一個的元件

#standardSQL 
    UPDATE `speedy-emissary-167213.pgp_orielresearch.pgp_PIK3CA_all_features_values_step_5` AS t2 
SET 
    chr3_3308581_TGGGGT=IF(t1.PIK3CA_features="chr3_3308581_TGGGGT",1,0), 
    chr3_3294651_CA=IF(t1.PIK3CA_features="chr3_3294651_CA",1,0), 
    chr3_3300867_CC=IF(t1.PIK3CA_features="chr3_3300867_CC",1,0), 
    chr3_3308373_ACTTGACTTG=IF(t1.PIK3CA_features="chr3_3308373_ACTTGACTTG",1,0), 
    chr3_3309125__T=IF(t1.PIK3CA_features="chr3_3309125__T",1,0), 
...... 
    chr3_3300985_TT=IF(t1.PIK3CA_features="chr3_3300985_TT",1,0), 
    chr3_3308139_AC=IF(t1.PIK3CA_features="chr3_3308139_AC",1,0) 
FROM 
    `speedy-emissary-167213.pgp_orielresearch.pgp_PIK3CA_all_features_values_step_4_sorted_500` AS t1 
WHERE 
    t1.sample_id = t2.sample_id 

當我用500運行 「chr3_3308581_TGGGGT = IF(t1.PIK3CA_features =」 chr3_3308581_TGGGGT」 ,1,0)「,對於不同的列,Scalar子查詢產生了多於一個元素。當我用較少的命令(通過刪除它的一部分)運行它時,命令成功運行。調試這個查詢最簡單的方法是什麼?

謝謝!

+0

該錯誤似乎很簡單。當您將其用作布爾表達式時,該子查詢會返回多個值。如果您有多個輸入,則無法評估與T/F的IF比較。 –

+0

爲什麼返回多個值,這些類型的值:chr3_3308581 _ ****是唯一的。你能否詳細說明一下?謝謝 – eilalan

+0

我不能告訴你,這是你的數據,我不是千里眼。運行您的查詢作爲選擇並找出:) –

回答

1

在where子句中缺少另一個條件。這工作

#standardSQL 
UPDATE 
    `speedy-emissary-167213.pgp_orielresearch.pgp_PIK3CA_all_features_values_step_5` AS t2 
SET 
    chr3_3294687_A = 1 
FROM 
    `speedy-emissary-167213.pgp_orielresearch.pgp_PIK3CA_all_features_values_step_4_sorted_500` AS t1 
WHERE 
    t1.sample_id = t2.sample_id and t1.PIK3CA_features="chr3_3294687_A"