1

我正在尝试使用以下查询将我的用户表与另一个表连接起来......

SELECT * FROM (`activities`)
JOIN `users` ON `users`.`id` = `activities`.`user` 
WHERE `user_subdomain` = 'hi' OR user_subdomain = '' 
ORDER BY `activities`.`id` desc 
LIMIT 10

有什么方法可以让用户的 id 不替换活动的 id 吗?

例如,当前如果有一个 id 为 10 且用户为 2 的活动,则在我运行查询后,该 id 将被 users 表的 id 替换并显示为 2。

非常感谢您的帮助!

4

1 回答 1

5

每当您连接表时,您应该明确选择而不是使用的列SELECT *,并在多个表中使用相同的列名时为它们指定列别名。

SELECT 
  activities.id,
  activities.othercol,
  /* Alias to userid */
  users.id AS userid,
  users.name,
  users.anothercolumn
FROM (`activities`)
  JOIN `users` ON `users`.`id` = `activities`.`user` 
WHERE `user_subdomain` = 'hi' OR user_subdomain = '' 
ORDER BY `activities`.`id` desc 
LIMIT 10

尽管没有必要在每个表前添加表名,除非列名相同。

SELECT 
  activities.id AS activityid,
  othercol,
  users.id AS userid,
  name,
  anothercolumn
于 2012-06-21T14:21:16.803 回答