[英]Mysql syntax using IN help!
我有一張圖片表: pictures(articleid,pictureurl)
和articles表: articles(id,title,category)
因此,簡要地說,每篇文章都有圖片,我使用articleid
列將圖片與文章鏈接起來。 現在我想從politic
類別中選擇文章的5張圖片。
我認為可以使用IN來完成,但我不知道該怎么做。
注意:請只查詢一個,因為我可以通過先選擇文章然后獲取圖片來做到這一點。
謝謝
要從某個類別的文章中獲取五張圖片,您可以執行以下操作:
SELECT pictures.pictureurl
FROM articles, pictures
WHERE articles.id = pictures.articleid AND articles.category = 'politic'
ORDER BY [your sort criteria]
LIMIT 5;
您可以考慮改一下這個問題。
如果您要查找IN
查詢而不是JOIN
這是Alex查詢的替代方法:
SELECT pictureurl
FROM pictures
WHERE arcticleid IN (SELECT id FROM articles WHERE category='politic')
LIMIT 5
為澄清起見進行了重寫(請參閱評論):
如果您希望將JOIN條件與SELECT條件分開,則可以編寫如下內容:
SELECT pictureurl
FROM pictures
JOIN articles ON id = articleid
WHERE category LIKE 'politics'
ORDER BY RAND()
LIMIT 5
我發現這樣寫的意圖有點清晰,也許只是我,但是我遇到了在SELECT * FROM a, b, c
形式下編寫的復雜查詢,該形式在MySQL 4下工作,這使MySQL 5感到窒息,而上述格式兩者都可以正常工作。
另外,如果您使用統一的ID列名稱來確保一致性,並避免在更復雜的場景中感到困惑,則可以改用USING
子句。 因此,如果articles ID列也命名為articlesid,則JOIN可以這樣寫:
SELECT pictureurl
FROM pictures
JOIN articles USING (articleid)
...
您實際上不需要為此使用IN
。 當您嵌套查詢或要檢查一組已知值時, IN
服務。
要在politics
類別中選擇5張隨機圖像:
SELECT pictureurl FROM articles, pictures WHERE pictures.articleid = articles.id AND articles.category = 'politics' ORDER BY RAND() LIMIT 5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.