簡體   English   中英

聯接兩個MYSQL查詢

[英]Join two MYSQL Query

我有兩個簡單的查詢,但是我需要一點幫助才能將它們加入一個結果中

$query="SELECT * FROM USLUGE WHERE marka='1'";

然后第二個查詢

$query2="SELECT * FROM USLUGE WHERE marka='2'";

我知道$ query的結果將給出表USLUGE的所有內容,其中marka = 1,而$ query2的結果將給出表USLUGE的所有內容,其中marka = 2

但是我需要將這兩個查詢合並到一個查詢中,當我執行WHILE循環時,要給我兩個查詢的所有結果,而不是兩個不同的WHILE循環,只有一個WHILE循環同時包含兩個查詢的結果?

是可能的,例如我給出了一個非常簡單的查詢來理解:)

只要表結構是相同的(更具體地說,如果兩個查詢返回相同數量的字段和相同的數據類型),則可以使用SQL UNION關鍵字,例如:

SELECT id, name FROM table1
UNION
SELECT id, name FROM table2

但是請注意,如果返回的列或數據類型的數量不匹配,則嘗試執行查詢將導致錯誤,例如,

SELECT id, name, comment FROM table1
UNION
SELECT id, name FROM table2

無法正常工作,並會導致錯誤。

編輯:有一個重寫的問題,在WHERE子句中使用ORIN是一個更好的解決方案:

SELECT * FROM USLUGE WHERE marka='1' OR marka='2'

要么

SELECT * FROM USLUGE WHERE marka IN ('1', '2');

你可以用工會

SELECT * FROM USLUGE WHERE marka='1'

UNION

SELECT * FROM USLUGE WHERE marka='2'

但是您不應該使用SELECT *輸入列名

從表中讀取的數據越多,查詢將變得越慢。 這會增加磁盤操作所需的時間。 同樣,當數據庫服務器與Web服務器分開時,由於必須在服務器之間傳輸數據,網絡延遲也會更長。 一個好習慣是在執行SELECT時始終指定需要的列。

在這種情況下,問題(現在編輯)僅涉及一張表

SELECT * FROM USLUGE WHERE marka='1' OR marka='2'

比做一個聯盟更好

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM