[英]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.