0
我有一個包含許多行和列的表。我想查找包含特定值的列,但只在ID = 7時僅搜索1行。使用find_in_set選擇包含1行中的值的列
寫下列表達式的正確方法是什麼?
SELECT *
FROM mytable
WHERE FIND_IN_SET(400, list_column)
WHEN ID=7;
謝謝。
我有一個包含許多行和列的表。我想查找包含特定值的列,但只在ID = 7時僅搜索1行。使用find_in_set選擇包含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
查詢並且使用在第二查詢那些列如以上所述一個從所述表中讀取的所有列。
但是,我猜你想這樣做的原因是因爲你的表格不在first normal form中,而且你正在將重複值存儲在列中。您可能需要查看第一個常規表單,看看是否確實如此,以及是否應該重新設計數據庫以避免此問題和其他問題。
1.參見標準化 – Strawberry