簡體   English   中英

MySQL從兩個表中選擇行,即使只有一個表可能具有該行

[英]MySQL select row from two tables even though only one table may have the row

我有兩個表, postspages posts表具有比pages表更多的列,但除此之外,它們在架構方面是相同的。

如果給出了一個slug ,則具有正確slug的行可能存在於pages表或posts表中。 我在想類似的東西

SELECT * 
FROM pages 
WHERE slug = 'about'

UNION 

SELECT * 
FROM posts 
WHERE slug = 'about'

但需要與該行slug的“約”既表所示。 我可能會使用一個簡單的INNER JOIN ,但是我的SQL知識是有限的。

為了澄清,我希望能夠在兩個表中進行搜索,就好像它們是一個表一樣。

這是posts表的結構:

`slug` varchar(128) NOT NULL,
`id` varchar(100) NOT NULL,
`title` text NOT NULL,
`published` bigint(20) NOT NULL,
`content` longtext NOT NULL,
`author` text NOT NULL,
`status` enum('published','draft','trashed') NOT NULL

pages結構:

`slug` varchar(128) NOT NULL,
`id` varchar(100) NOT NULL,
`title` text NOT NULL,
`content` longtext NOT NULL,
`menu_order` int(11) DEFAULT NULL,
`status` enum('published','drafted','trashed') NOT NULL

您可以使用並集,但需要指定列(col1,col2,..) ,兩個列表應該相同:

SELECT col1,col2,.. 
FROM pages 
WHERE slug = 'about' 

UNION

SELECT col1,col2,.. 
FROM posts 
WHERE slug = 'about'

如果要像搜索兩個表一樣搜索它們,那么您真的想使用UNION(而不是JOIN)。

您上面的查詢可能失敗,因為表具有不同的列。 您應該在兩個子查詢中指定列名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM