簡體   English   中英

使用IN語法的mysql幫助!

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM