2016-03-08 27 views
0

我有MySQL查询:MYSQL NOT IN得到某一列

select * from ( 
    SELECT subject as kodetb FROM 
     vtiger_servicecontracts,vtiger_servicecontractscf, 
     vtiger_crmentity,vtiger_user2role, vtiger_role, 
     vtiger_users,vtiger_leaddetails, vtiger_contactdetails, vtiger_campaign, 
     `vtiger_accounting_payments` vap1, vtiger_accounting va1 
     left join vtiger_accounting va2 on va2.accountingid=va1.accountingid 
     left join vtiger_accounting_payments vap2 
      on va1.accountingid=vap2.idtransaction 
      and va2.accountingtype='Pelunasan Gesek' 
     WHERE vtiger_crmentity.crmid=vap1.idtransaction and 
      va1.accountingrelated2=vtiger_servicecontracts.servicecontractsid and 
      vtiger_servicecontractscf.servicecontractsid=vtiger_servicecontracts.servicecontractsid and 
      vap1.idtransaction=va1.accountingid and vtiger_crmentity.deleted=0 and 
      vtiger_user2role.userid=vtiger_users.id and 
      vtiger_crmentity.smcreatorid=vtiger_user2role.userid and 
      vtiger_user2role.roleid=vtiger_role.roleid and 
      vtiger_users.user_name='stafsda' and cf_1091=leadid and 
      vtiger_contactdetails.contactid=vtiger_servicecontracts.contactid and 
      vtiger_campaign.campaignid=cf_1155 and 
      date_format(vap1.paymentdate,'%Y-%m-%d') = date_format('2016-03-07','%Y-%m-%d') and 
      va1.accountingtype='Pelunasan Bank' and subject 
     NOT IN ( 
      SELECT subject as kodetb FROM 
       vtiger_servicecontracts,vtiger_servicecontractscf, 
       vtiger_crmentity,vtiger_user2role, vtiger_role, 
       vtiger_users,vtiger_leaddetails, vtiger_contactdetails, vtiger_campaign, 
       vtiger_accounting, vtiger_accounting_payments 
      WHERE vtiger_crmentity.crmid=idtransaction and 
       accountingrelated2=vtiger_servicecontracts.servicecontractsid and 
       vtiger_servicecontractscf.servicecontractsid=vtiger_servicecontracts.servicecontractsid and 
       idtransaction=accountingid and vtiger_crmentity.deleted=0 and 
       vtiger_user2role.userid=vtiger_users.id and vtiger_crmentity.smcreatorid=vtiger_user2role.userid and 
       vtiger_user2role.roleid=vtiger_role.roleid and vtiger_users.user_name='stafsda' and cf_1091=leadid and 
       vtiger_contactdetails.contactid=vtiger_servicecontracts.contactid and 
       vtiger_campaign.campaignid=cf_1155 and date_format(paymentdate,'%Y-%m-%d') = 
       date_format('2016-03-07' ,'%Y-%m-%d') and accountingtype='Pelunasan Gesek' group by idtransaction 
     ) 
) xyz order by kodetb 

我有一个问题查询上面的结果成功地运行,并且仅显示一列。 当我在两个子查询中将另一列放在kodetb旁边时,它显示错误消息“操作数应该包含1列”。

我要的是旁边列“kodetb”

感谢

+0

你想要什么领域? –

回答

0

如果我们需要选择其他newcolumn也配对(主题,newcolumn)不应该在子查询与条件NOT IN (...)显示某些列,试试这个代码:

select * from (
    SELECT subject as kodetb, newcolumn FROM 
     vtiger_servicecontracts,vtiger_servicecontractscf, 
     vtiger_crmentity,vtiger_user2role, vtiger_role, 
     vtiger_users,vtiger_leaddetails, vtiger_contactdetails, vtiger_campaign, 
     `vtiger_accounting_payments` vap1, vtiger_accounting va1 
     left join vtiger_accounting va2 on va2.accountingid=va1.accountingid 
     left join vtiger_accounting_payments vap2 
      on va1.accountingid=vap2.idtransaction 
      and va2.accountingtype='Pelunasan Gesek' 
     WHERE vtiger_crmentity.crmid=vap1.idtransaction and 
      va1.accountingrelated2=vtiger_servicecontracts.servicecontractsid and 
      vtiger_servicecontractscf.servicecontractsid=vtiger_servicecontracts.servicecontractsid and 
      vap1.idtransaction=va1.accountingid and vtiger_crmentity.deleted=0 and 
      vtiger_user2role.userid=vtiger_users.id and 
      vtiger_crmentity.smcreatorid=vtiger_user2role.userid and 
      vtiger_user2role.roleid=vtiger_role.roleid and 
      vtiger_users.user_name='stafsda' and cf_1091=leadid and 
      vtiger_contactdetails.contactid=vtiger_servicecontracts.contactid and 
      vtiger_campaign.campaignid=cf_1155 and 
      date_format(vap1.paymentdate,'%Y-%m-%d') = date_format('2016-03-07','%Y-%m-%d') and 
      va1.accountingtype='Pelunasan Bank' and CONCAT(subject, '--',n ewcolumn) 
     NOT IN (
      SELECT CONCAT(subject, '--', newcolumn) as concatsubject FROM 
       vtiger_servicecontracts,vtiger_servicecontractscf, 
       vtiger_crmentity,vtiger_user2role, vtiger_role, 
       vtiger_users,vtiger_leaddetails, vtiger_contactdetails, vtiger_campaign, 
       vtiger_accounting, vtiger_accounting_payments 
      WHERE vtiger_crmentity.crmid=idtransaction and 
       accountingrelated2=vtiger_servicecontracts.servicecontractsid and 
       vtiger_servicecontractscf.servicecontractsid=vtiger_servicecontracts.servicecontractsid and 
       idtransaction=accountingid and vtiger_crmentity.deleted=0 and 
       vtiger_user2role.userid=vtiger_users.id and vtiger_crmentity.smcreatorid=vtiger_user2role.userid and 
       vtiger_user2role.roleid=vtiger_role.roleid and vtiger_users.user_name='stafsda' and cf_1091=leadid and 
       vtiger_contactdetails.contactid=vtiger_servicecontracts.contactid and 
       vtiger_campaign.campaignid=cf_1155 and date_format(paymentdate,'%Y-%m-%d') = 
       date_format('2016-03-07' ,'%Y-%m-%d') and accountingtype='Pelunasan Gesek' group by idtransaction 
     ) 
) xyz order by kodetb 
+0

您好,这是我想要显示DATE_FORMAT(vap1.paymentdate,'%d /%m /%Y')为tanggal的列, DATE_FORMAT(due_date,'%d /%m /%Y')as tgljatuhtempo,vtiger_servicecontracts。受试者kodetb, vtiger_servicecontracts.contract_type如tipetb,cf_1101如TB,总和(vap1.amount)作为lunasbank,总和(vap1.amount)作为totalgesek,vtiger_contactdetails.firstname如namadepan,vtiger_contactdetails.lastname如namabelakang, vtiger_contactdetails.contactid如MEMBERID, CAMPAIGNNAME为nokk, cf_1085为namabank, cf_1095, cf_1099为tagihanbank, vtiger_leaddetails.lastname作为tipekartu – mlms133

+0

请编辑您的答案,因为我想我自己也得到错误 #1583 - 对不正确在调用本地函数'CONCAT'时调用。谢谢 – mlms133