【问题标题】:MySQL / PDO syntax incorrect on JOINed tablesJOINed 表上的 MySQL / PDO 语法不正确
【发布时间】:2015-01-12 10:43:15
【问题描述】:

我正在尝试使用 1 个 select 语句从 2 个表中检索数据。

测试失败

$sql = "SELECT banned FROM users WHERE id =:id UNION SELECT first_name, last_name, 
mobile_phone,email, city, address, postal_code, user_type, 
active FROM personal WHERE id =:id";

我从这次尝试中了解到,您不能选择不同数量的列,它们需要均匀才能起作用。

尝试两次失败

$sql = "SELECT users.banned, personal.first_name, personal.last_name, personal.mobile_phone,
personal.email, personal.city, personal.address, personal.postal_code, personal.user_type,
personal.active FROM users WHERE users.id =:id INNER JOIN personal WHERE personal.id =:id";

知道了:SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER JOIN personal WHERE personal.id ='21'

尝试通过别名选择失败

最后一次尝试也失败了

$sql = "SELECT banned, first_name, last_name, mobile_phone, email, city, address, postal_code, user_type, active FROM users WHERE users.id =:id INNER JOIN personal WHERE personal.id =:id";

没有什么可以尝试或我做错了什么。

【问题讨论】:

标签: php mysql sql join pdo


【解决方案1】:

你的语法和逻辑不正确:

SELECT u.banned
     , p.first_name
     , p.last_name
     , p.mobile_phone
     , p.email
     , p.city
     , p.address
     , p.postal_code
     , p.user_type
     , p.active 
FROM users u JOIN  personal p ON u.id = p.id
WHERE u.id =:id

一些提示:

  • 当您使用UNIONUNION ALL 时,您应该记住,所涉及的所有SELECTs 应该具有相同数量的字段。
  • WHERE 总是在 FROMJOIN 之后加上 ON 子句。

【讨论】:

  • 感谢工作是 AS 搞砸了 :( .. 计时器结束后将接受谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多