mysql中的union小坑

2021-09-12 12:24:11 字數 844 閱讀 8633

今天在使用union時,遇到乙個小小的坑

業務情景如下,需要從表中查詢出對應資料同時,還需要將當前表的最大id給查詢出來,使用的sql如下

select

id from

chat_session

where

`from` = $from_id

and `to` = $to_id

and workbench_id = $workbench_id

and type = $type union

select

max( id )

from

chat_session

注:其中的 $from_id都是變數,語句本身看起來很簡單,就是將條件查詢的結果最後再union上乙個固定的最大值,但是這裡有乙個問題,當這個根據條件查詢出來的id本身就是最大值時,將會使查詢出來的結果只有一條,這與我本來預期的兩個一模一樣的結果是衝突的。當時為了解決這個問題,我的解決方法如下就是將查詢出來的最大值加上一,就可以保證條件查詢的結果不與union的結果不一樣

select

id from

chat_session

where

`from` = $from_id

and `to` = $to_id

and workbench_id = $workbench_id

and type = $type union

select

(max( id ) + 1 )

from

chat_session

總的來說,還是對union的理解不夠深入。

MYSQL中union的用法

1.union查詢就是把2條或者多條sql語句的查詢結果,合併成乙個結果集。如 sql1 n行,sql2 m行,sql1 union sql2 n m行2.union滿足什麼條件就可以用了?只要結果集中的列數一致就可以.如都是2列或者n列 3.如果union後的結果有重複 即某2行,或n行,所有的列...

Mysql安裝小坑

1.yum安裝後,當你啟動時,發現啟動不起來。檢視日誌發現報錯 can t start server can t create pid file no such file or directory 解決方案 mkdir var log mariadb chown mysql mysql var lo...

Mysql中的Union和Union All查詢

union 用於合併兩個或多個 select 語句的結果集,並消去表中任何重複行。union 內部的 select 語句必須擁有相同數量的列,列也必須擁有相似的資料型別。同時,每條 select 語句中的列的順序必須相同。select name from a union select name fr...