Mysql使用子查询和中的
我有一个名为Mysql使用子查询和中的,mysql,sql,join,Mysql,Sql,Join,我有一个名为category\u id的字段,来自我的表contact,每个contact有一个id或类别的列表id(1或1,2,3) 类别表中具有id和Name列的类别的名称 我喜欢显示联系人表中类别列表中所有类别名称的结果。怎么做 SELECT c.`id`, (SELECT cat.`name` FROM category cat WHERE c.`category` in cat.`id` ) AS 'Categories' FROM contact c
category\u id
的字段,来自我的表contact
,每个contact
有一个id
或类别的列表id(1或1,2,3)
类别表中具有id和Name列的类别的名称
我喜欢显示联系人表中类别列表中所有类别名称的结果。怎么做
SELECT c.`id`,
(SELECT cat.`name`
FROM category cat
WHERE c.`category` in cat.`id` ) AS 'Categories'
FROM contact c
我测试过这个,但它当然不起作用。c.category
列内容可以是1,2,3或3。您有一个包含文本1,2,3
的category字段吗?那么你想要的不是直接可能的。字段在SQL中被视为原子实体,您的查询被解析/执行为
WHERE c.category IN ('1,2,3')
aka
WHERE c.category = '1,2,3'
而不是
WHERE c.category IN ('1', '2', '3')
aka
WHERE (c.category = '1') OR (c.category = '2') OR (c.category = '3')
你需要的
MySQL确实有这样的功能,但请注意,使用它会阻止使用索引,并且在任何大型表上,查询性能都将是垃圾。它还使您的SQL不可移植。您有一个类别字段,其中包含文本1,2,3
?那么你想要的不是直接可能的。字段在SQL中被视为原子实体,您的查询被解析/执行为
WHERE c.category IN ('1,2,3')
aka
WHERE c.category = '1,2,3'
SELECT con.`id`, cat.'name'
FROM contract con
INNER JOIN category cat ON con.'category' = cat.'id'
WHERE c.category IN ('1,2,3')
而不是
WHERE c.category IN ('1', '2', '3')
aka
WHERE (c.category = '1') OR (c.category = '2') OR (c.category = '3')
你需要的
MySQL确实有这样的功能,但请注意,使用它会阻止使用索引,并且在任何大型表上,查询性能都将是垃圾。它还使SQL不可移植
SELECT con.`id`, cat.'name'
FROM contract con
INNER JOIN category cat ON con.'category' = cat.'id'
WHERE c.category IN ('1,2,3')