【问题标题】:MySQL SELECT FROM WHERE JOINMySQL 选择从哪里加入
【发布时间】:2018-04-24 08:53:07
【问题描述】:

我想从我的数据库中选择一行并加入该行。

当我使用这个命令时它工作正常:

SELECT p.* FROM pages AS p
JOIN products AS pro ON pro.page_id = p.id

但是在执行以下命令时出现错误:

select p.* from pages as p where p.id = 21605
join products as pro on pro.page_id = p.id

为什么会这样,我怎样才能得到第二个命令的结果?

【问题讨论】:

    标签: mysql database join where


    【解决方案1】:

    你的语法不正确

    SELECT p.* FROM pages AS p
    JOIN products AS pro 
    ON pro.page_id = p.id
    WHERE p.id = 21605
    

    或者

    SELECT T.* 
    FROM (SELECT p.* FROM pages AS p WHERE p.id = 21605) AS T
    JOIN products AS pro 
    ON pro.page_id = T.id
    

    【讨论】:

    • 谢谢!它有效,其中一个算作更好的做法吗?如果是,为什么?
    • 第一个是更好的做法,因为它避免了子查询。基本的 SELECT 语法是 SELECT column list FROM tablename JOIN table and On 子句 WHERE condition GROUP BY column list ORDER BY column list LIMIT start offset,limit。你省略了那些不需要的。
    • 是的,@SloanThrasher 是对的。第一个是正确的。如果你得到你的答案,请接受并投票
    猜你喜欢
    • 1970-01-01
    • 2013-08-05
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多