我有两个简单的查询,但我需要一些帮助才能在一个结果中加入它们
$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>
是可能的,例如我提供了一个如此简单的查询来理解:)
答案 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
子句中使用IN
或WHERE
是一个更好的解决方案:
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更好