我想知道是否有任何方法可以更改此 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,所以任何帮助/指导将不胜感激。
最佳答案
你不需要在这里使用UNION
,你可以只使用IN运算符(operator)
IN
运算符允许您在 WHERE
子句中指定多个值。
SELECT FieldValue,
SubmissionID
FROM jos_rsform_submission_values
WHERE FieldName IN ('Waybill1', 'Waybill2', 'Waybill3', 'Waybill4', etc...)
AND FieldValue != ""
ORDER BY SubmissionId ASC
关于mysql - 需要帮助通过使用 "for"或 "while"循环类型来缩短此查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51615208/