加入两个MYSQL查询

时间:2013-07-11 13:12:08

标签: mysql while-loop

我有两个简单的查询,但我需要一些帮助才能在一个结果中加入它们

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

第二个查询

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

我知道来自$ query的结果将从表USLUGE中给出ALL,其中marka = 1,结果$ query2将从表USLUGE得到ALL,其中marka = 2

但我需要在一个查询中加入这两个查询,并且当我执行WHILE循环时,为了给我两个查询的所有结果,而不是两个不同的WHILE循环,只有一个WHILE循环来自两个查询的结果? / p>

是可能的,例如我提供了一个如此简单的查询来理解:)

3 个答案:

答案 0 :(得分:1)

只要表结构相同(更具体地说,如果两个查询都返回相同数量的字段和相同的数据类型),则可以使用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

工作,并会导致错误。

带有重写问题的

编辑,在OR子句中使用INWHERE是一个更好的解决方案:

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

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

答案 1 :(得分:0)

你可以使用union

SELECT * FROM USLUGE WHERE marka='1'

UNION

SELECT * FROM USLUGE WHERE marka='2'

但是你不应该使用 SELECT * 来代替列名

从表中读取的数据越多,查询就越慢。它增加了磁盘操作所需的时间。此外,当数据库服务器与Web服务器分开时,由于必须在服务器之间传输数据,因此网络延迟会更长。 这是一个好习惯,总是指定在执行SELECT时需要哪些列。

答案 2 :(得分:0)

问题(现在编辑)仅涉及一个表

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

比做UNION更好