簡體   English   中英

使用子查詢和IN的列的MySQL SELECT

[英]Mysql SELECT with column using subquery and a IN

我的表格contact有一個名為category_id的字段,其內容為每個contactcategories (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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM