![](/img/trans.png)
[英]How to select from two tables in MySQL even if not all rows in one table have corespondents in the other?
[英]MySQL select row from two tables even though only one table may have the row
我有兩個表, posts
和pages
。 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.