我試圖得到作爲我的查詢3標籤名稱而不是獲取tag_id的結果。情況是這樣的:SQL句子的名稱3 id標籤
create table names (
ˋattr_idˋ int(11) unsigned not null auto_increment,
ˋattr_nameˋ varchar(30),
primary key(ˋattr_idˋ)
) engine=MyISAM
create table posts (
ˋpost_idˋ int(5) unsigned not null auto_increment
ˋattr_1 int(11) unsigned,
ˋattr_2ˋ int(11) unsigned,
ˋattr_3ˋ int(11) unsigned,
ˋreferencedˋ int(5),
primary key (ˋpost_idˋ)
) engine=MyISAM
insert into names (ˋattr_nameˋ) values
(''),('name1'),('name2'),('name3'),('name4'),('name5'),('name6');
insert into posts (ˋattr_1ˋ, ˋattr_2ˋ, ˋattr_3ˋ, referenced) values
(1, 2, 3, null), (1, 4, 2, 1), (1, 3, 1, 2), (1, 2, 5, 1), (4, 2, 5, 1)
我想獲得的結果是這referenced
值等於post_id = 1
併爲所有這些行的行,更改attr_name
這是在其attr_1
,attr_2
和attr_3
names
表。
這就是我在提問之前所嘗試過的。在這裏我能得到與後referenced
值等於1:
SELECT post_id, attr_1, attr_2, attr_3, referenced
FROM posts
WHERE a.referenced = 1;
但在這裏,試圖改變name
insted的的attr_1
或attr_2
或attr_3
無法得到我想要的東西:
SELECT a.post_id, b.attr_name, b.attr_name, b.attr_name, a.referenced
FROM posts a, names b
WHERE a.referenced = 1 AND
a.attr_1 = b.attr_id AND
a.attr_2 = b.attr_id AND
a.attr_3 = b.attr_id
GROUP BY a.post_id
莫非有人幫助我呢?
感謝您的建議。
一般GROUP BY規則說: 如果指定了GROUP BY子句,則SELECT列表中的每個列引用都必須標識分組列或作爲set函數的參數。 – jarlh