1

次のクエリを使用して、users テーブルを別のテーブルと結合しようとしています...

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 に答える