是否有可能在WHERE子句中,像MYSQL WHERE子句中的for循環?
SELECT
name,
surname,
id
FROM person
WHERE (while(x < 5)) = id
那麼結果將有編號的,從1到4。5可以有價值觀的數組列表的for循環。
這甚至可能嗎?
ps。這個例子可以通過使用完成,其中5> ID
我只是想知道這是否可以用一個循環來完成,我將使用在碧玉報告此查詢片斷
是否有可能在WHERE子句中,像MYSQL WHERE子句中的for循環?
SELECT
name,
surname,
id
FROM person
WHERE (while(x < 5)) = id
那麼結果將有編號的,從1到4。5可以有價值觀的數組列表的for循環。
這甚至可能嗎?
ps。這個例子可以通過使用完成,其中5> ID
我只是想知道這是否可以用一個循環來完成,我將使用在碧玉報告此查詢片斷
你可以使用一個簡單的查詢來處理這樣的情況,它就是你要求的,我的意思是代替循環。當執行查詢它執行像環
SELECT
p.name,
p.surname,
p.id
FROM person p
WHERE p.id < 5
這將檢查ID爲從1開始的記錄,以4
這並不需要使用循環WHERE子句你不能做到這一點。您需要一個返回值以在條件中使用它的構造。
5 > id
返回可以在WHERE子句中使用的值。注意,在存儲過程中,你可以做這樣的事情 -
DECLARE i INT DEFAULT 0;
WHILE i < 5 DO
SELECT * FROM table WHERE id = i;
SET i = i + 1;
END WHILE;
...但它是沒有效率的。
如果您知道從哪裏獲取數據,您可以使用BETWEEN命令。像下面的命令基於您的評論
SELECT name, surname, id FROM person WHERE id BETWEEN 1 AND 5 ;
:
5可以有值的列表或數組
你可能是這樣的後這個:
select id, name, surname
from person
where find_in_set(id, '1,2,3,4') > 0;
SQLFiddle示例:http://sqlfiddle.com/#!2/7186d/3
這沒有意義。 WHERE子句用於建立有關結果集中每一行中列的謂詞。你通過比較,'EXISTS','IN'和其他工具來做到這一點。我無法想到任何情況下,一個循環是有道理的。也許如果你能提出一個例子,*作爲一個普通的謂詞不是可以重寫的,我們可能會提供幫助。如果你不能想到這樣一個例子,那麼它就表明這是不必要的。 –
請參閱http://stackoverflow.com/questions/6226447/passing-sql-in-parameter-list-in-jasperreport –