簡體   English   中英

使用find_in_set從1行中選擇包含值的列

[英]Select column containing value from 1 row using find_in_set

我的桌子上有很多行和列。 我想查找包含某個值的列,但是當ID = 7時僅搜索1行。

編寫以下表達式的正確方法是什么?

SELECT *   
FROM mytable
WHERE FIND_IN_SET(400, list_column)
WHEN ID=7;

謝謝。

您不能按照您建議的形式進行操作。

在單個查詢中顯示包含400列的最佳方法是使用CASE或類似形式,每個被測列使用一種情況。 例如:

SELECT CASE
   WHEN col1=400 THEN 'col1'
   WHEN col2=400 THEN 'col2'
   WHEN col3=400 THEN 'col3'
   ...
   ELSE 'Not found'
END CASE
FROM mytable
WHERE id=7

可以使用動態SQL(或等效的PHP)通過INFORMATION_SCHEMA查詢並在第二個查詢(例如上述查詢)中使用這些列來讀取表中的所有列。

但是,我猜測您要執行此操作的原因是因為您的表未采用第一范式 ,並且您正在將重復值存儲在列中。 您可能想要查找第一個范式,以查看是否確實如此,並且是否應該重新設計數據庫以避免進一步的問題和其他問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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