我希望能夠從我的作業表中選擇員工,我可以選擇所有員工,但現在我想在 IF 陳述句下選擇所有員工。IF company = 'Starbucks' THEN 僅顯示特定的 Starbucks 記錄 WHERE startDate > 2022-1-1,而所有其他記錄必須保留,無論其 Company 或 StartDate 如何
SELECT * FROM MyTable:
Name Company StartDate
Steve Smith Starbucks 2021-01-01
Alan Smith Greggs 2021-04-01
Charles Gregory Starbucks 2022-02-01
Glen Royle Apple 2022-01-01
Brian Edwards Starbucks 2021-05-09
James White Greggs 2022-02-01
我試過了:
SELECT * FROM MYTABLE
WHERE Company != 'Starbucks'
AND StartDate > '2022-1-1'
//Returns 0 Starbucks employees, and ALL records after 2022-1-1
SELECT * FROM MYTABLE
WHERE StartDate > '2022-1-1'
//Only returns records after 2022-1-1 for ALL companies
期望的結果:
Name Company StartDate
Alan Smith Greggs 2021-04-01
Charles Gregory Starbucks 2022-02-01
Glen Royle Apple 2022-01-01
James White Greggs 2022-02-01
正如您從所需結果表中看到的那樣,沒有顯示在星巴克的兩名員工,其 StartDate BEFORE 2022-01-01,而其他所有人仍然存在,以及一名 Starbucks 員工的 StartDate 是 2022 年之后-01-01
謝謝你。
uj5u.com熱心網友回復:
您應該為您的資料庫使用正確的日期文字。在 MySQL 上,你會想要:
SELECT *
FROM MYTABLE
WHERE Company != 'Starbucks' AND StartDate > '2022-01-01';
在 SQL Server 上,您可以使用:
SELECT *
FROM MYTABLE
WHERE Company != 'Starbucks' AND StartDate > '20220101';
您當前的查詢可能發生的情況是,它'2022-1-1'被按字典順序視為字串,然后會錯誤地與其他日期進行比較。
uj5u.com熱心網友回復:
也許是這樣的:
SELECT *
FROM MYTABLE
WHERE 1 = CASE WHEN Company = 'Starbucks' AND StartDate <= '2022-01-01' THEN 0 ELSE 1 END;
或者
SELECT *
FROM MYTABLE
WHERE Company != 'Starbucks'
UNION ALL
SELECT *
FROM MYTABLE
WHERE Company = 'Starbucks' AND StartDate > '20220101';
uj5u.com熱心網友回復:
我想你需要的是
SELECT * FROM MYTABLE
WHERE Company != 'Starbucks'
OR StartDate > '2022-01-01'
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/475000.html
