有一個mysql命令行它應該打印TXT
行當STATUS
行是2000
在另一個表中有相同的ID
= 1,它喜歡連接到另一個表;檢查sql表格
第一個表(tb_users
):
ID | TXT
----------
1 | 9
二表(tb_check
):
ID | STATUS
----------
1 | 2000
我的mysql命令行:
SELECT * FROM `tb_users` ORDER BY RAND() LIMIT 1
有一個mysql命令行它應該打印TXT
行當STATUS
行是2000
在另一個表中有相同的ID
= 1,它喜歡連接到另一個表;檢查sql表格
第一個表(tb_users
):
ID | TXT
----------
1 | 9
二表(tb_check
):
ID | STATUS
----------
1 | 2000
我的mysql命令行:
SELECT * FROM `tb_users` ORDER BY RAND() LIMIT 1
查詢應該是這樣的,
SELECT *
FROM tb_users TU
JOIN tb_check TC ON TU.id=TC.id
WHERE TC.STATUS=2000;
您已使用JOIN以獲得連接表的結果。通過連接表格我的意思是我們需要使用foreign key。
爲什麼?一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,還是爲了將來訪問SO。 –
請加上'ORDER BY RAND()'; – PrisonPants
這對我來說絕對是挑剔的,但這裏就是這樣。只要有可能,在查詢時不要使用RAND()。它是O(n)類型,可以顯着減慢查詢本身。 – Andrew
嘗試......
SELECT * FROM tb_users恩,tb_check TC WHERE TU.ID = TC.ID AND TC.status = 2000 ORDER BY RAND()LIMIT 1;
什麼是'ORDER BY ORDER BY'? – Saty
@Saty錯字...更正。 – PrisonPants
非常好。那裏有什麼問題嗎? – Dave