我有一张名为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行:
同一个单词可能在结果集中两次。
有人可以帮助我哪种方法最好吗? 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);
答案 0 :(得分:1)
我想你想要像
这样的东西 SELECT b.word FROM WORDS a LEFT JOIN WORDS b ON a.team = b.team WHERE a.word = 'a'
丑陋但在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'
答案 1 :(得分:1)
你的问题越来越复杂了。
这是一个使用union和子查询来获取结果的潜在解决方案。
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
列是保留关键字,不要忘记在选择时使用反引号。