1

我有一张叫做单词的表:

word(text) team(number)

a          1
b          1
c          2
d          3
e          1
f          1

当我在做 mysql 查询时,我只知道这个词,所以它看起来像

SELECT word FROM words WHERE word = 'e'

但是,我想在同一个团队中附加其他单词

所以我的查询将返回 4 行:

  1. e
  2. 一种
  3. b
  4. F

同一个词可能在结果集中出现两次。

有人可以帮我使用哪种方法最好吗?UNION SELECT , INNER JOIN 还是什么?

谢谢

更新:经过测试,我意识到我需要附加其他记录,即最初选择的单词是第一个。还将“组”重命名为“团队”以避免混淆。

供测试用:

create table words(word text, team int);
insert into words (word, team) values('a', 1),('b', 1),('c', 2),('d', 2),('e',1),('f',1);
4

3 回答 3

1

我想你想要类似的东西

SELECT b.word FROM WORDS a LEFT JOIN WORDS b ON a.team = b.team WHERE a.word = 'a'

sqlfiddle

丑陋但在 SQL 中做你想要的

SELECT word FROM words WHERE word = 'e' UNION SELECT b.word FROM WORDS a LEFT JOIN WORDS b ON a.team = b.team WHERE a.word = 'e' AND b.word != 'e'

小提琴

于 2013-08-01T20:11:07.080 回答
1

你的问题越来越复杂。

这是一个潜在的解决方案,它使用联合和子查询来获取结果。

SQL小提琴

MySQL 5.5.32 架构设置

create table words(word text, team int);
insert into words (word, team) values('a', 1),('b', 1),('c', 2),('d', 2),('e',1),('f',1);

查询 1

SELECT word FROM words WHERE word = "e"

UNION

(SELECT word FROM words
  WHERE team = (SELECT team FROM words WHERE word = "e")
  AND word != "e"
  ORDER BY word)

结果

| WORD |
--------
|    e |
|    a |
|    b |
|    f |
于 2013-08-01T20:16:10.847 回答
0

您可以使用OR

    SELECT  word  FROM words 
    where `group` in (select `group` from words where word = 'a' )

只是为了让您知道您有group保留关键字的列,选择它时不要忘记使用反引号。

于 2013-08-01T20:06:33.670 回答