MYSQL在同一个表上进行选择

时间:2013-08-01 20:01:36

标签: mysql

我有一张名为words的表:

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. ë
  2. 一个
  3. B'/ LI>
  4. ˚F
  5. 同一个单词可能在结果集中两次。

    有人可以帮助我哪种方法最好吗? 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);
    

3 个答案:

答案 0 :(得分: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'

fiddle

答案 1 :(得分:1)

你的问题越来越复杂了。

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

SQL Fiddle

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)

<强> Results

| WORD |
--------
|    e |
|    a |
|    b |
|    f |

答案 2 :(得分:0)

您可以使用OR

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

只是告诉你有group列是保留关键字,不要忘记在选择时使用反引号。