是否有可能根據某些條件進行更改where子句的查詢?例如,我想從table1中選擇*,其中數據是19/July/2016,但如果字段ID爲null,則不執行任何操作,否則將id與其他值進行比較。像下面的查詢一樣?MySQL如果在Where子句
Select * from table1 where date="2016-07-19" if(isnull(id),"",and id=(select * from ...))
是否有可能根據某些條件進行更改where子句的查詢?例如,我想從table1中選擇*,其中數據是19/July/2016,但如果字段ID爲null,則不執行任何操作,否則將id與其他值進行比較。像下面的查詢一樣?MySQL如果在Where子句
Select * from table1 where date="2016-07-19" if(isnull(id),"",and id=(select * from ...))
是的。這應該是可能的。
如果我們假設date
和id
是列中(該不幸命名)表引用table1
,如果我理解你正在試圖達到什麼樣的,我們可以寫像查詢這樣的:
SELECT t.id
, t.date
, t....
FROM table1 t
WHERE t.date='2016-07-19'
AND ( t.id IS NULL
OR t.id IN (SELECT expr FROM ...)
)
這也有可能納入MySQL的IF()
和IFNULL()
功能,如果有一定的要求做。
只要在語句提交到數據庫後動態更改SQL語句的文本,不,這是不可能的。在生成SQL語句時,需要完成對SQL文本的任何動態更改,將提交給數據庫。
我的個人偏好是使用連接操作而不是IN (subquery)
謂詞。
我想你太努力了。如果id是NULL
,這相當於where子句中有FALSE
。所以:
Select * from table1 where date="2016-07-19" and id=(select * from ...)
應該只匹配你想要的記錄。如果id
是NULL
,你什麼也得不到。
好的,我看到兩個答案,一個是我的,用不同的方式解釋了你想要的。所以,你可能想編輯這個問題來澄清你的意思是「什麼都不做」。 – MAP