我有两张桌子: 用户:id username clan 部落: id clan crest
我尝试按用户名进行搜索,输出用户名的部落。
查询:
SELECT `users`.`id`, `users`.`username`,`users`.`clan`, `clans`.`crest` FROM `users` JOIN `clans` ON `users`.`username` LIKE '%gu%'
输出:
id username clan crest
2 gusar 26_760.gif
3 gusar11 Tong 26_760.gif
如果氏族是空的,那么冠将是空的......但是......(
我想要以下结果:
id username clan crest
2 gusar
3 gusar11 Tong 26_760.gif
答案 0 :(得分:2)
如果你想要第一张表的结果,即使第二张表中没有匹配,你也想要使用LEFT OUTER JOIN。
答案 1 :(得分:2)
您正在使用LIKE从一个表加入另一个表,通常没有理由为什么要这样做。相反,您可能希望在WHERE子句中使用外键来连接表。
您希望使用LEFT OUTER JOIN(或简称LEFT JOIN)尝试匹配第二个表中的所有行,但如果没有匹配则显示NULL值:
SELECT `users`.`id`, `users`.`username`,`users`.`clan`, `clans`.`crest`
FROM `users`
LEFT JOIN `clans` ON `users`.`clan` = `clans`.`clan`
WHERE `users`.`username` LIKE '%gu%'
请注意,在您的用户表中,理想情况下您应该持有氏族ID而不是氏族标题。然后,您将使用此查询来执行搜索:
SELECT `users`.`id`, `users`.`username`,`users`.`clan`, `clans`.`crest`
FROM `users`
LEFT JOIN `clans` ON `users`.`clanid` = `clans`.`id`
WHERE `users`.`username` LIKE '%gu%'
答案 2 :(得分:0)
尝试
SELECT `users`.`id`, `users`.`username`,`users`.`clan`, `clans`.`crest` FROM `users` LEFT JOIN `clans` ON `users`.`username` LIKE '%gu%'
答案 3 :(得分:0)
您需要使用某些条件加入表格。您正在使用ON,您应该使用WHERE。我假设users
。clan
与clans
有关。clans
?试试这个:
SELECT `users`.`id`, `users`.`username`,`users`.`clan`, `clans`.`crest` FROM `users` LEFT JOIN `clans` ON `users`.`clan` = `clans`.`clan` WHERE `users`.`username` LIKE '%gu%'