【问题标题】:Dynamic query string动态查询字符串
【发布时间】:2012-02-06 10:30:37
【问题描述】:

我想根据一个特定的列值在 from 子句中添加一些动态内容。 可能吗? 例如,

 SELECT BILL.BILL_NO AS BILLNO,
        IF(BILL.PATIENT_ID IS NULL,"CUS.CUSTOMERNAME AS NAME","PAT.PATIENTNAME AS NAME")
 FROM
        BILL_PATIENT_BILL AS BILL 
        LEFT JOIN IF(BILL.PATIENT_ID IS NULL," RT_TICKET_CUSTOMER AS CUS ON BILL.CUSTOMER_ID=CUS.ID"," RT_TICKET_PATIENT AS PAT ON BILL.PATIENT_ID=PAT.ID")

但是这个查询不起作用。

这里

BILL_PATIENT_BILL表是普通表。
它可以有PATIENT_IDCUSTOMER_ID。如果特定记录具有PATIENT_ID,我希望RT_TICKET_PATIENT 中的PATIENTNAME 作为NAME OtherWise,它将保持CUSTOMER_ID。如果是,我希望 CUSTOMERNAME 作为 NAME。

这里我确定BILL_PATIENT_BILL 必须有PATIENT_IDCUSTOMER_ID。 谁能帮我?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您还可以使用IF() 来选择正确的值,而不是从字符串构造查询:

     SELECT 
            BILL.BILL_NO AS BILLNO,
            IF( BILL.PATIENT_ID IS NULL, cus.CUSTOMERNAME, pat.PATIENTNAME ) AS NAME
     FROM
            BILL_PATIENT_BILL AS BILL 
     LEFT JOIN RT_TICKET_CUSTOMER cus ON BILL.CUSTOMER_ID = cus.ID
     LEFT JOIN RT_TICKET_PATIENT pat ON BILL.PATIENT_ID = pat.ID
    

    但是,也可以从字符串中 PREPARE 一个语句和 EXECUTE 它,但这种技术容易发生 SQL 注入,我只能不建议这样做:

    在这里阅读:Is it possible to execute a string in MySQL?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-19
      • 2017-01-12
      • 2021-05-25
      • 1970-01-01
      • 2018-08-07
      相关资源
      最近更新 更多