给定这两个简单的查询:
SELECT materialID FROM materials WHERE compoundNumber = "<some user input1>";
SELECT materialID FROM materials WHERE vendorCompoundNumber = "<some user input2>";
如何将它们合并为一个查询,结果集如下所示:
materialID | compoundDupFound | vendorCompoundDupFound 1 | 0 | 1 - - or - - 2 | 1 | 0 - - or - - 3 | 1 | 1
我意识到我可以先执行一个,然后再执行另一个,但我想知道是否有一种巧妙的内置方式来构建查询以同时执行这两项操作。
compoundNumber 和 vendorCompoundNumber 列在数据库中必须是唯一的,因此我正在检查表单并确保用户输入的内容是唯一的。我将根据结果集显示错误消息。
最佳答案
可以使用OR
运算符组合查询
SELECT materialID, compoundNumber AS compoundDupFound, vendorCompoundNumber AS vendorCompoundDupFound
FROM materials
WHERE compoundNumber = "input1"
OR vendorCompoundNumber = "input2";
根据评论,您似乎还需要知道哪些匹配。所以这又指向一个 UNION
语句,但是与谈论这条路径的其他答案相比有一个小的变化
SELECT materialID, compoundNumber AS compoundDupFound, NULL as vendorCompoundDupFound
FROM materials
WHERE compoundNumber = "input1"
UNION
SELECT materialID, NULL, vendorCompoundNumber AS vendorCompoundDupFound
FROM materials
WHERE vendorCompoundNumber = "input2"
这应该让您的输出尽可能接近原始问题。这样您将获得匹配的记录或 NULL
,然后可以判断哪些是匹配的。
关于php - MySQL 将两个 SELECT 查询合并为一个检查重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23742294/