php - mysql 从多个表中选择,即使一个表不包含 where 子句

标签 php mysql select

我有两个(或三个,或四个...)表,我想一次选择所有表以计算所有表中的条目数。

例如,如果我有一些表: “新闻”、“文章”、“画廊”

在每个表中我都有一行叫做“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/

相关文章:

javascript - 选择更改时阻止多个选择滚动到顶部

php - 在 mysql 中选择登录/注销对并计算时间跨度

PHP自定义函数采用as语法,函数($x as $y)

php - 在 PHP 字符串中查找 youtube 链接并将其转换为嵌入代码?

php - 显示当前登录用户的个人资料

java - 使用 token 对客户端和服务器端进行身份验证的正确方法?

mysql - 如何平均 MySQL 结果集

mysql - 如何在MySQL Workbench中执行SQL脚本?

MySQL 返回特定答案上方和下方的行

Sql select 在表上插入时速度很慢