可以,前面加上模式名就行了x0dx0ax0dx0aselect *x0dx0afrom 資料庫1.tablename, 資料庫2.tablenamex0dx0awhere 鏈接條件。x0dx0ax0dx0a這是一個在我本機上跑過的例子,沒有鏈接條件,是個笛卡爾積:x0dx0aselect * from hibernate.card_t,wedb.article_t
⑵ mysql 一個表自連查詢數據
建表和視圖語句:
DROP TABLE IF EXISTS `tab`;
CREATE TABLE `tab` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userid` int(11) NULL DEFAULT NULL,
`date` datetime NULL DEFAULT NULL,
`instructions` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`amount` decimal(18, 2) NULL DEFAULT NULL,
`type` tinyint(1) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 9 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
create view tab_v as
select
`tab`.`userid` AS `userid`,
date_format( `tab`.`date`, '%Y-%m' ) AS `ym`,
`tab`.`instructions` AS `instructions`,
`tab`.`amount` AS `amount`,
`tab`.`type` AS `type`
from
`tab`
查詢語句:
select t0.userid 用戶ID,
t0.ym 年月,
t1.cnt 本月收入筆數,
t2.instructions 本月最大收入項目,
t2.amount 本月最大收入金額,
t3.instructions 本月最小收入項目,
t3.amount 本月最小收入金額,
t4.cnt 本月支出筆數,
t5.instructions 本月最大支出項目,
t5.amount 本月最大支出金額,
t6.instructions 本月最小支出項目,
t6.amount 本月最小支出金額,
t7.cnt 本月結余
from (select distinct a.userid,
a.ym
from tab_v a) t0
left join (select a.userid,
a.ym,
count(1) cnt
from tab_v a
where a.type = 2
group by a.userid,
a.ym) t1
on t0.userid = t1.userid
and t0.ym = t1.ym
left join (select a.userid,
a.ym,
a.amount,
group_concat(b.instructions) instructions
from (select a.userid,
a.ym,
max(a.amount) amount
from tab_v a
where a.type = 2
group by a.userid,
a.ym) a,
tab_v b
where a.userid = b.userid
and a.ym = b.ym
and a.amount = b.amount
group by a.userid,
a.ym,
a.amount) t2
on t0.userid = t2.userid
and t0.ym = t2.ym
left join (select a.userid,
a.ym,
a.amount,
group_concat(b.instructions) instructions
from (select a.userid,
a.ym,
min(a.amount) amount
from tab_v a
where a.type = 2
group by a.userid,
a.ym) a,
tab_v b
where a.userid = b.userid
and a.ym = b.ym
and a.amount = b.amount
group by a.userid,
a.ym,
a.amount) t3
on t0.userid = t3.userid
and t0.ym = t3.ym
left join (select a.userid,
a.ym,
count(1) cnt
from tab_v a
where a.type = 1
group by a.userid,
a.ym) t4
on t0.userid = t4.userid
and t0.ym = t4.ym
left join (select a.userid,
a.ym,
a.amount,
group_concat(b.instructions) instructions
from (select a.userid,
a.ym,
max(a.amount) amount
from tab_v a
where a.type = 1
group by a.userid,
a.ym) a,
tab_v b
where a.userid = b.userid
and a.ym = b.ym
and a.amount = b.amount
group by a.userid,
a.ym,
a.amount) t5
on t0.userid = t5.userid
and t0.ym = t5.ym
left join (select a.userid,
a.ym,
a.amount,
group_concat(b.instructions) instructions
from (select a.userid,
a.ym,
min(a.amount) amount
from tab_v a
where a.type = 1
group by a.userid,
a.ym) a,
tab_v b
where a.userid = b.userid
and a.ym = b.ym
and a.amount = b.amount
group by a.userid,
a.ym,
a.amount) t6
on t0.userid = t6.userid
and t0.ym = t6.ym
left join (select a.userid,
a.ym,
sum(case
when type = 1 then
-1 * a.amount
when 2 then
a.amount
end) cnt
from tab_v a
group by a.userid,
a.ym) t7
on t0.userid = t7.userid
and t0.ym = t7.ym
只能做到這個效果了
⑶ MySQL中常見的連接查詢方式有哪些
MySQL中常見的連接查詢有:等值連接,使用=連接兩列數據,所有能夠匹配的結果都會被顯示出來;內連接,關鍵字INNER JOIN ON,連接效果等同於等值連接;左連接,關鍵字LEFT JOIN ON,關鍵字左側的表的所有數據均顯示,關鍵字右側的表匹配內容顯示,無對應內容使用NULL填充;右連接,關鍵字RIGHT JOIN ON,關鍵字右側的表的所有數據均顯示,關鍵字左側的表匹配內容顯示,無對應內容使用NULL填充;一般情況下,左連接和右連接可以實現相同的連接效果。如果對這部分內容感興趣,可以從黑馬程序員獲取測試相關課程了解一下。
⑷ mysql資料庫連接查詢的點.啥意思
這就是一種對象的語義,好比面向對象編程,點(.)之前的表示一個對象(可以是表,視圖等),點(.)後的表示該對象的屬性,整個語義就是調用了某個對象的某屬性,在SQL中表現為查詢某個表/視圖的某個列。
⑸ mysql 資料庫關聯表查詢的問題
是你SQL寫錯了,你把LEFT JOIN改成RIGHT JION就好了.
⑹ Mysql資料庫連表查詢問題。
select a_id, a_name
from a
where a_id not in (select a.a_id
from b
left outer join a
on b.a_id = a.a_id
where b.b_price < 1)
⑺ Mysql資料庫多表聯合查詢有幾種方法
select * from table1 t1,table2 t2 where t1.id=t2.id
這樣就是聯合查詢啊
left join
right join
inner join
詳細的看操作手冊啊
⑻ 資料庫(比如MYSQL) ,表連結查詢與子查詢哪個效率高些 為什麼
in子查詢、exists子查詢、連接,效率的探討
以下是SQL的幫助 (高級查詢優化概念)
Microsoft® SQL Server™ 2000 使用內存中的排序和哈希聯接技術執行排序、交集、聯合、差分等操作。SQL Server 利用這種類型的查詢計劃支持垂直表分區,有時稱其為分列存儲。
SQL Server 使用三種類型的聯接操作:
嵌套循環聯接
合並聯接
哈希聯接
如果一個聯接輸入很小(比如不到 10 行),而另一個聯接輸入很大而且已在其聯接列上創建索引,則索引嵌套循環是最快的聯接操作,因為它們需要最少的 I/O 和最少的比較。有關嵌套循環的更多信息,請參見了解嵌套循環聯接。
如果兩個聯接輸入並不小但已在二者聯接列上排序(例如,如果它們是通過掃描已排序的索引獲得的),則合並聯接是最快的聯接操作。如果兩個聯接輸入都很大,而且這兩個輸入的大小差不多,則預先排序的合並聯接提供的性能與哈希聯接相似。然而,如果兩個輸入的大小相差很大,則哈希聯接操作通常快得多。有關更多信息,請參見了解合並聯接。
哈希聯接可以有效處理很大的、未排序的非索引輸入。它們對復雜查詢的中間結果很有用,因為:
中間結果未經索引(除非已經顯式保存到磁碟上然後創建索引),而且生成時通常不為查詢計劃中的下一個操作進行適當的排序。
查詢優化器只估計中間結果的大小。由於估計的值在復雜查詢中可能有很大的誤差,因此如果中間結果比預期的大得多,則處理中間結果的演算法不僅必須有效而且必須適度弱化。
哈希聯接使得對非規范化的使用減少。非規范化一般通過減少聯接操作獲得更好的性能,盡管這樣做有冗餘之險(如不一致的更新)。哈希聯接則減少使用非規范化的需要。哈希聯接使垂直分區(用單獨的文件或索引代表單個表中的幾組列)得以成為物理資料庫設計的可行選項。有關更多信息,請參見了解哈希聯接。
⑼ mysql資料庫表聯合查詢的問題
結論:UNION 和order by 不能這樣直接共存使用。
解決辦法:你可以使用嵌套查詢方法,轉換查詢結果,再把結果合並起來。
例如:
select * from (SELECT * FROM table06122 ORDER BY 2 ASC LIMIT 0, 100)
UNION
select * from (SELECT * FROM table06122 ORDER BY 1 ASC LIMIT 0, 90
);
可以完美解決。希望採納!