我有兩個表,posts
和pages
。 posts
表具有比pages
表多的列,但除此之外它們在模式方面相同。MySQL從兩個表中選擇一行,即使只有一個表可能有該行
如果給出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
我認爲你在這裏使用'UNION'是正確的......我必須缺少一些東西 –
@lc。只有當每個表返回的列數相同且數據類型相同時,UNION纔會起作用。根據上面的描述,'SELECT *'不能與'UNION'一起工作,因爲一個表的列數多於另一個表的數量,除非它們限制了返回的列。 – Taryn
請發佈兩個表格的結構,如果有任何樣品數據。 –