我正在尝试使用OR和NAND操作设计查询,有人可以告诉我查询是否正确:
select * from country where country_code='AL' UNION (SELECT * from country
WHERE country_id NOT IN
(SELECT country_id from country
where country_name='Land islands'
UNION
SELECT country_id from country
where country_code='AX'
));
我借助我的另一个问题创建了查询;
我想在它们之间使用AND,NOT,NAND,OR操作的5个查询。 我创建了3个(检查我的问题1)我需要帮助来创建5个选择查询。
我的应用程序是搜索应用程序,用户可以在每个块之间使用i5查询块搜索数据库,我们有如下所述的操作。但是这些操作是在一张表中进行的。
说明:
我想在表格中选择记录,我将在表格之间使用许多操作。 MAX 5在一边查询操作。
查询1,查询2,查询3,查询4,查询5.
案例:
(Query 1 AND Query 2 OR Query 3 NAND Query 4 NOT Query 5)
(Query 1 OR Query 2 OR Query 3 OR Query 4 OR Query 5)
(Query 1 AND Query 2 AND Query 3 AND Query 4 AND Query 5)
(Query 1 NOT Query 2 NOT Query 3 NOT Query 4 NOT Query 5)
等。查询块之间的操作可能会有所不同......我会根据这个编写我的PHP脚本,但我想以这样的方式执行逻辑,我可以加入每个逻辑..
现在我需要帮助
答案 0 :(得分:2)
为什么您在同一UNION
之间使用Table
。您可以使用operators
之类的
Select * from country where country_code='AL' or (country_name <> 'Land islands' and country_code <> 'AX');
希望它适合你。
答案 1 :(得分:2)
编写第一个查询的最简单方法:
select *
from country
where country_code='AL' and country_name not in ('Land islands', 'AX')
这可以假设country_id
在country
表中是唯一的 - 基于命名的合理假设。如果不是这种情况,查询会有点复杂。
您的原始查询需要对表进行多次扫描,NOT IN
使用子查询进行反加入,并使用聚合删除重复项(它包含union
而不是union all
)。
修订版只扫描表,保留与where
子句匹配的行。
根据您的第一个查询,您可以在{{1}中使用AND
和OR
(可能还有IN
和NOT IN
)来完成您想要的一切条款。