㈠ php怎麼把多個sql查詢結果集合並每個結果集的結構不同
最簡單的方法,把結果弄成一致,例如使用下面的SQL查詢語句:
select time,type,property1,property2,property3,price from xxxxxx……
union all
select time,type,property4,price,0,0 from xxxxxx……
union all
select time,type,property5,property6,0,0 from xxxxxx……
方法是使用UNION ALL合並查詢結果,對於查詢欄位少的語句增加0或者空白、null等常量,使得查詢結果的欄位數要相同。
為了得到特殊的排序,可以把上面的查詢結果插入臨時表,再從臨時表中查詢結果。
㈡ MySQL中關於臨時表的一些基本使用方法
臨時表可能是非常有用的,在某些情況下,保持臨時數據。最重要的是應該知道的臨時表是,他們將當前的客戶端會話終止時被刪除。
臨時表中添加MySQL版本3.23。如果您使用的是舊版本的MySQL比3.23,可以不使用臨時表,但可以使用堆表。
如前所述臨時表將只持續只要的會話是存在的。如果運行一個PHP腳本中的代碼,該臨時表將被銷毀時,會自動執行完腳本後。如果已連接到MySQL資料庫的伺服器上,通過MySQL的客戶端程序的臨時表將一直存在,直到關閉客戶端或手動破壞的表。
實例
下面是一個例子,使用臨時表在PHP腳本中,使用mysql_query()函數,可以使用相同的代碼。
mysql>
CREATE
TEMPORARY
TABLE
SalesSummary
(
->
proct_name
VARCHAR(50)
NOT
NULL
->
,
total_sales
DECIMAL(12,2)
NOT
NULL
DEFAULT
0.00
->
,
avg_unit_price
DECIMAL(7,2)
NOT
NULL
DEFAULT
0.00
->
,
total_units_sold
INT
UNSIGNED
NOT
NULL
DEFAULT
0
);
Query
OK,
0
rows
affected
(0.00
sec)
mysql>
INSERT
INTO
SalesSummary
->
(proct_name,
total_sales,
avg_unit_price,
total_units_sold)
->
VALUES
->
('cucumber',
100.25,
90,
2);
mysql>
SELECT
*
FROM
SalesSummary;
+--------------+-------------+----------------+------------------+
|
proct_name
|
total_sales
|
avg_unit_price
|
total_units_sold
|
+--------------+-------------+----------------+------------------+
|
cucumber
|
100.25
|
90.00
|
2
|
+--------------+-------------+----------------+------------------+
1
row
in
set
(0.00
sec)
當發出一個SHOW
TABLES命令,那麼臨時表將不會被列在列表中。現在如果將MySQL的會話的注銷,那麼會發出SELECT命令,那麼會發現沒有在資料庫中的數據。即使臨時表也就不存在了。
刪除臨時表:
默認情況下,所有的臨時表被刪除時,MySQL的資料庫連接被終止。不過要刪除他們之前就應該發出DROP
TABLE命令。
下面的例子為刪除一個臨時表。
mysql>
CREATE
TEMPORARY
TABLE
SalesSummary
(
->
proct_name
VARCHAR(50)
NOT
NULL
->
,
total_sales
DECIMAL(12,2)
NOT
NULL
DEFAULT
0.00
->
,
avg_unit_price
DECIMAL(7,2)
NOT
NULL
DEFAULT
0.00
->
,
total_units_sold
INT
UNSIGNED
NOT
NULL
DEFAULT
0
);
Query
OK,
0
rows
affected
(0.00
sec)
mysql>
INSERT
INTO
SalesSummary
->
(proct_name,
total_sales,
avg_unit_price,
total_units_sold)
->
VALUES
->
('cucumber',
100.25,
90,
2);
mysql>
SELECT
*
FROM
SalesSummary;
+--------------+-------------+----------------+------------------+
|
proct_name
|
total_sales
|
avg_unit_price
|
total_units_sold
|
+--------------+-------------+----------------+------------------+
|
cucumber
|
100.25
|
90.00
|
2
|
+--------------+-------------+----------------+------------------+
1
row
in
set
(0.00
sec)
mysql>
DROP
TABLE
SalesSummary;
mysql>
SELECT
*
FROM
SalesSummary;
ERROR
1146:
Table
'TUTORIALS.SalesSummary'
doesn't
exist