[英]Mysql SELECT with column using subquery and a IN
我的表格contact
有一個名為category_id
的字段,其內容為每個contact
的categories
(1或1,2,3)的id
或列表ID。
來自具有ID和名稱列的類別表的類別名稱。
我想顯示來自聯系人表的類別列表的所有類別名稱的結果。 怎么做 ?
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
? 那么,您想要的東西就不可能直接實現。 字段在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確實具有FIND_IN_SET()
這類東西,但是請注意,使用它會阻止使用索引,並且任何大型表都會降低查詢性能。 它還使您的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')
SELECT c.`id`, cat.'name'
FROM contract c
RIGHT JOIN category cat ON c.'category' = cat.'id'
WHERE c.category IN ('1,2,3')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.