0

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

$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 循环包含两个查询的结果?

这可能吗,例如,我给出了一个非常简单的查询来理解:)

4

3 回答 3

1

只要表结构相同(更具体地说,如果两个查询返回相同数量的字段和相同的数据类型),就可以使用 SQLUNION关键字,例如:

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

请注意,如果返回的列数或数据类型不匹配,则尝试执行查询将导致错误,例如,

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

不起作用,并会导致错误。

编辑:对于重写的问题,在子句中使用ORor是一个更好的解决方案:INWHERE

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

或者

SELECT * FROM USLUGE WHERE marka IN ('1', '2');
于 2013-07-11T13:27:35.270 回答
0

你可以使用联合

SELECT * FROM USLUGE WHERE marka='1'

UNION

SELECT * FROM USLUGE WHERE marka='2'

但是您不应该使用SELECT *键入列名

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

于 2013-07-11T13:38:50.830 回答
0

问题(现在已编辑)仅涉及一张表,在这种情况下

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

会比做一个 UNION 更好

于 2013-07-11T14:13:33.163 回答