MySQL查詢數據,使用IF來判斷動態執行條件
格式
IF(expression ,expr_true, expr_false);
MySQL的IF()函數,接受三個表達式,如果第一個表達式為true,而不是零且不為NULL,它將返回第二個表達式。否則,它返回第三個表達式。根據使用它的上下文,它返回數字或字符串值。
實例
SELECT * FROM book WHERE IF(price > 120, btypeid=10, btypeid=11);#WHERE IF(條件, true執行條件, false執行條件 )
釋義
當price大於120為真時,執行語句為where price>120 and btypeid=10;
當price大於120為假時,執行語句為where price<120 and btypeid=11;准確來說應該是where price<=120 and btypeid=11;
SELECT * FROM book WHERE IF(price > 120, btypeid=10, btypeid=11);這條sql語句等價於如下sql語句
select * from book where price > 120 and btypeid =10 union select * from book where price < 120 and btypeid = 11;
MySQL UNION 操作符
MySQL UNION 操作符用於連接兩個以上的 SELECT 語句的結果組合到一個結果集合中。多個 SELECT 語句會刪除重復的數據。
MySQL UNION 操作符語法格式: SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions] UNION [ALL | DISTINCT] SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions];
參數
-
expression1, expression2, ... expression_n: 要檢索的列。
-
tables: 要檢索的數據表。
-
WHERE conditions: 可選, 檢索條件。
-
DISTINCT: 可選,刪除結果集中重復的數據。默認情況下 UNION 操作符已經刪除了重復數據,所以 DISTINCT 修飾符對結果沒啥影響。
-
ALL: 可選,返回所有結果集,包含重復數據。
SQL UNION 實例
下面的 SQL 語句從 "Websites" 和 "apps" 表中選取所有不同的country(只有不同的值):
實例
SELECT country FROM
Websites
UNION
SELECT country FROM apps
ORDER BY country;
UNION
SELECT country FROM apps
ORDER BY country;