![](/img/trans.png)
[英]SQL Select Query returning DATE without TIME inside SQL but i when i run my ASP project it keeps adding “12:00:00 AM”
[英]When I run my query in Snowflake it keeps running but without the OR statement is runs in merely seconds
我有一个查询,其中我 select 来自两个表的 3 列。 首先,我检查客户编号是否在列表中,为此我使用了“IN”语句。 然后我检查 clientnumber 是否也在另一个表中,以便两个数字相等。
最后我想排除以某个值结尾的值。 这就是问题所在。
当我只有一个“NOT LIKE”时,它运行得很好,但是当我使用“OR NOT LIKE”之后它继续运行。
请参阅下面的查询:
SELECT "MAIL_ADDR", "ClientNumber", "CNumber"
FROM "ADRESSES", CUSTOMERS
WHERE "ClientNumber" IN ('0000206302','0000206307','0000206309','0000206321'
AND "ClientNumber" = "CNumber"
AND "MAIL_ADDR" NOT LIKE '%domain.nl'
OR "MAIL_ADDR" NOT LIKE '%domain.com'
我不知道要在我的查询中更改什么,因为我没有从 Snowflake 收到任何错误消息。 也许它与性能问题有关。
可以重写查询以使用 JOIN 语法,排除条件应与AND
连接:
SELECT "MAIL_ADDR", "ClientNumber", "CNumber"
FROM "ADRESSES"
JOIN CUSTOMERS
ON "ClientNumber" = "CNumber"
WHERE "ClientNumber" IN ('0000206302','0000206307','0000206309','0000206321')
AND "MAIL_ADDR" NOT LIKE '%domain.nl'
AND "MAIL_ADDR" NOT LIKE '%domain.com';
一种更紧凑的方法是使用NOT LIKE ANY语法:
SELECT "MAIL_ADDR", "ClientNumber", "CNumber"
FROM "ADRESSES"
JOIN CUSTOMERS
ON "ClientNumber" = "CNumber"
WHERE "ClientNumber" IN ('0000206302','0000206307','0000206309','0000206321')
AND NOT ("MAIL_ADDR" LIKE ANY ('%domain.nl', '%domain.com'));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.