如何解決此查詢?如果存在其他問題?
IF EXISTS(SELECT * FROM鏈接WHERE年齡= '10' )
SELECT * FROM鏈接WHERE年齡= '10' ORDER BY
ELSE
SELECT * FROM鏈接ORDER BY
因此,如果一個鏈接存在10天,那麼它將被顯示,否則它將是隨機的。
如何解決此查詢?如果存在其他問題?
IF EXISTS(SELECT * FROM鏈接WHERE年齡= '10' )
SELECT * FROM鏈接WHERE年齡= '10' ORDER BY
ELSE
SELECT * FROM鏈接ORDER BY
因此,如果一個鏈接存在10天,那麼它將被顯示,否則它將是隨機的。
我想你可以寫:
SELECT *
FROM links
WHERE age = '10'
OR NOT EXISTS
(SELECT 1
FROM links
WHERE age = '10'
)
ORDER
BY RAND()
LIMIT 1
;
。 。 。但我不確定它會表現如何。它可能更有意義,只要運行查詢WHERE age = '10'
,然後運行其他查詢只有當第一個返回沒有結果。
如果10歲以下的鏈接不存在,此查詢不會給出隨機鏈接? – Gruffer
@ user2700729:如果有的話,這將返回'age ='10''的所有行;否則,它將返回所有行。你是說,而不是返回*所有*行,它應該只返回*一個*行?通過「隨機」,你是否意味着你不關心它返回哪一行,或者你是否說你確實想要隨機? – ruakh
總是會有1個條目只有特定的年齡。所以,我想這樣的:)如果不存在(SELECT * FROM鏈接WHERE年齡= '10' ) SELECT * FROM鏈接WHERE年齡= '10' ORDER BY RANDOM ELSE SELECT * FROM鏈接ORDER BY RANDOM – Gruffer
你有兩個不同的查詢 - 用一個聯盟:
SELECT *
FROM links
WHERE age = '10'
UNION ALL
SELECT *
FROM links
WHERE NOT EXISTS (SELECT * FROM links WHERE age='10')
ORDER BT RAND()
你說:「如果* A *存在鏈接,則* it *會......」這意味着你將只是一個取行。你是否需要'年齡='10''的所有行? – spencer7593