[英]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.