[英]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
子句中使用OR
或IN
是一個更好的解決方案:
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.