需要使用“ for”或“ while”循环类型来缩短此查询的帮助

时间:2018-07-31 14:01:10

标签: mysql sql

我想知道是否可以通过某种方式更改此SQL查询,这样我就不必每次都要为要从中提取数据的新字段(“ FieldName”)执行UNION

我大约有30个字段,名称为“ Waybill1到“ Waybill30”。

我想执行以下查询,而不必对每个字段ID都使用UNION。

这里是查询,仅使用3个“ FieldName”值:

SELECT `FieldValue`, `SubmissionID` FROM `jos_rsform_submission_values` WHERE `FieldName` = "Waybill1" AND `FieldValue` != ""
UNION
SELECT `FieldValue`, `SubmissionID` FROM `jos_rsform_submission_values` WHERE `FieldName` = "Waybill2" AND `FieldValue` != ""
UNION
SELECT `FieldValue`, `SubmissionID` FROM `jos_rsform_submission_values` WHERE `FieldName` = "Waybill3" AND `FieldValue` != "" ORDER BY `SubmissionId` ASC

它基本上应该执行与PHP / Javascript等中的“ for”循环相同的任务。

我对SQL不太熟悉,所以任何帮助/指导都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您无需在此处使用UNION,只需使用IN运算符

通过IN运算符,您可以在WHERE子句中指定多个值。

SELECT FieldValue,
       SubmissionID
FROM   jos_rsform_submission_values
WHERE  FieldName IN ('Waybill1', 'Waybill2', 'Waybill3', 'Waybill4', etc...)
   AND FieldValue != ""
ORDER BY SubmissionId ASC