1

我正在尝试使用 OR 和 NAND 操作设计查询,有人可以告诉我查询是否正确:

问题1:这个查询正确吗?

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'
        ));

我在我的另一个问题的帮助下创建了查询;

参考:

问题2:

我想在它们之间使用带有 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脚本,但我想以可以加入每个逻辑的方式执行逻辑..

现在我需要帮助

4

2 回答 2

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子句匹配的行。

根据您的第一个查询,您可以通过在子句中使用ANDand OR(也许还有INand NOT IN)来做任何您想做的事情。where

于 2013-06-05T13:21:23.660 回答
2

为什么你UNION在相同的之间使用Table。您可以使用operatorslike轻松完成此查询

Select * from country where country_code='AL' or (country_name <> 'Land islands' and country_code <> 'AX');

希望对你有效。

于 2013-06-05T13:04:04.773 回答