SELECT p.pageid
, u.link
FROM thepage p INNER JOIN themix m
ON p.pageid = m.pageid
INNER JOIN theurl u
ON m.urlid = u.urlid
WHERE DATE(p.createdate) = '2011-11-09'
ORDER BY p.createdate DESC
應該這樣做,我想。如果你只想要唯一的網址,使用:
SELECT u.link
FROM thepage p
INNER JOIN themix m
ON p.pageid = m.pageid
INNER JOIN theurl u
ON m.urlid = u.urlid
WHERE DATE(p.createdate) = '2011-11-09'
GROUP BY m.urlid
ORDER BY MIN(p.createdate) DESC
圖片的標題說明
WHERE DATE(p.createdate) = '2011-11-09'
將要掃描整個表page
並呼籲每一行的DATE()
功能。你有兩個選擇,使其更快:
更改createdate
到DATE
(從DATETIME
或TIMESTAMP
,它現在是),並使用:
WHERE p.createdate = '2011-11-09'
或保存它,因爲它是與用途:
WHERE p.createdate >= '2011-11-09'
AND p.createdate < '2011-11-10'
表和列名是沒有前綴或後綴像你這樣的the
更好。這是不是更清潔,更清晰(即使沒有別名)?
SELECT url.link
FROM page
INNER JOIN mix
ON page.pageid = mix.pageid
INNER JOIN url
ON mix.urlid = url.urlid
WHERE DATE(page.createdate) = '2011-11-09'
ORDER BY page.createdate DESC
您是否嘗試過使用LEFT JOIN? – tonoslfx
對,你已經說過了..你想加入表 – mishu
對我來說看起來像一個簡單的SQL JOIN操作。 – GordonM