所以我想加入2个表,其中1表示条件:
这是我到目前为止所尝试的内容:
SELECT * FROM (ci_usertags)
JOIN ci_tags ON ci_usertags.utag_tid
WHERE utag_uid = 1
我的表格如下:
ci_usertags
utag_id
utag_uid
utag_tid
ci_tags
tag_id
tag_name
我想为tag
1的用户选择所有ID
并获取tag name
。有了这个SQL,我得到了重复的结果,甚至tags
都没有ID
1
答案 0 :(得分:3)
您的查询是:
SELECT *
FROM (`ci_usertags`) JOIN
`ci_tags`
ON `ci_usertags`.`utag_tid`
WHERE `utag_uid`
这是一种非敏感的SQL。条件是utag_tid
不是0或NULL而utag_uid
不是0或NULL。这是因为没有条件,因此只关注变量的值。在其他一些SQL引擎中,这会导致错误。
我想你想要这样的东西:
SELECT *
FROM `ci_usertags` ut JOIN
`ci_tags` t
ON ut.`utag_tid` = t.tag_id
WHERE `utag_uid` = 1
答案 1 :(得分:2)
使用嵌套查询作为替换连接(速度提升)的解决方案
Select tag_id, tag_name
FROM ci_tags
WHERE tag_id IN (Select utag_tid FROM ci_usertags WHERE utag_id = 1 GROUP BY 1)
GROUP BY 1,2
答案 2 :(得分:1)
取代:
SELECT *
FROM (`ci_usertags`) JOIN
`ci_tags`
ON `ci_usertags`.`utag_tid`
WHERE `utag_uid`
在:
SELECT *
FROM `ci_usertags` ut JOIN
`ci_tags` t
ON ut.`utag_tid` = t.tag_id
WHERE `utag_uid` = 1