[英]MYSQL: Select column from table B if it exists, otherwise from table A
[英]MySQL Grab From Table if Exists, otherwise use Different Table
我需要選擇表中值 = 1 的所有 IsActive 列,但如果另一個表與 ItemName 列匹配,則我需要從另一個表中獲取該行。
示例:表table1
--------------------------------------------
ItemName | Cost | Price | IsActive
--------------------------------------------
Item1 | 4.50 | 5.00 | 1
--------------------------------------------
Item2 | 3.00 | 3.50 | 0
--------------------------------------------
Item3 | 1.75 | 2.40 | 1
--------------------------------------------
Item4 | 2.55 | 3.05 | 1
示例: table2
--------------------------------------------
ItemName | Cost | Price | IsActive
--------------------------------------------
Item1 | 5.50 | 6.70 | 1
--------------------------------------------
Item8 | 3.00 | 3.50 | 0
--------------------------------------------
Item8 | 3.50 | 4.50 | 1
--------------------------------------------
Item3 | 2.75 | 3.40 | 1
--------------------------------------------
Item5 | 2.60 | 3.90 | 1
結果需要是這樣的:
--------------------------------------------
ItemName | Cost | Price | IsActive
--------------------------------------------
Item1 | 5.50 | 6.70 | 1
--------------------------------------------
Item3 | 2.75 | 3.40 | 1
--------------------------------------------
Item4 | 2.55 | 3.05 | 1
--------------------------------------------
Item5 | 2.60 | 3.90 | 1
--------------------------------------------
Item8 | 3.50 | 4.50 | 1
基本上,如果 ItemName 存在於 table2 中,則從 IsActive = 1 的位置獲取它,否則從 IsActive = 1 的 table1 獲取它。
如何在單個 MySQL 語句中執行此操作? 有人可以提供一個例子嗎? 另外,請注意, table2
也可能完全為空。 我需要按ItemName ASC
排序的結果,當然所有 IsActive 值都需要為1
,因為這需要在WHERE clause
設置,我在查詢上設置了分頁,並且還在其上使用了 LIMIT (0, 20),所以我需要保持分頁,所以它需要在 1 個查詢內工作。
這對我來說似乎非常基本,但我在如何奇怪地執行這個簡單的 MySQL 語句方面苦苦掙扎。 如果有人可以提供這樣的 MySQL 示例,那將比 SQL 更受歡迎,因為兩者不同並且我需要使用 MySQL。
您可以像這樣使用 NOT EXISTS 和 UNION ALL:
select *
from table1 t1
where isActive = 1
and not exists (
select 1
from table2 t2
where t1.ItemName = t2.ItemName
and t2.isActive = 1
)
union all
select *
from table2 t1
where isActive = 1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.