我有两个(或三个,或四个...)表,我想一次选择所有表以计算所有表中的条目数。
例如,如果我有一些表: “新闻”、“文章”、“画廊”
在每个表中我都有一行叫做“author_id”
现在,如果我使用以下选择语句:
SELECT *
FROM
news as n, articles as a, galleries as g
WHERE
n.author = 1
AND a.user = 1
AND g.uploader = 1
如果每个表至少有一行作者(或用户或上传者)匹配“1”,我只会得到一个结果 即使一个(或两个..)表不包含“1”我怎么能得到结果
最佳答案
或者,您可以在子查询中使用 UNION ALL
组合所有表的结果。然后您现在可以 COUNT()
指定的 Author_ID
。以下查询将获取所有表中指定 author_id
的记录总数。
SELECT COUNT(author_ID)
FROM
(
SELECT userID AS Author_ID FROM news
UNION ALL
SELECT user_ID AS Author_ID FROM articles
UNION ALL
SELECT UiD AS Author_ID FROM galleries
) a
WHERE a.Author_ID = 1
后续问题,
- 您希望如何显示结果?因为这也可以通过加入表格来解决。
- 或者你要统计记录的主表和引用表是什么?
关于php - mysql 从多个表中选择,即使一个表不包含 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12793526/