[英]Getting a row based on the condition
一直在尋找解決這個問題的方法。 我已經搜索過它,但沒有找到一個。
我有 2 個相關的表
條目表
ID | entry_name | 入口數量 | entry_group | entry_owner | 高賭注 | early_finish |
---|---|---|---|---|---|---|
1 | 測試1 | 3 | 1 | 測試1 | 0 | 1 |
2 | 測試2 | 3 | NULL | 測試 2 | 0 | 1 |
3 | 測試3 | 3 | NULL | 測試3 | 0 | 1 |
4 | 測試4 | 3 | NULL | 測試 4 | 0 | 0 |
條目表
ID | parent_id | 實體名稱 | 條目重量 | 戰斗 |
---|---|---|---|---|
1 | 1 | 測試1__1 | 1011 | NULL |
2 | 1 | 測試1__2 | 1011 | NULL |
3 | 1 | 測試1__3 | 1011 | NULL |
4 | 2 | 測試2__1 | 1011 | NULL |
5 | 2 | 測試2__2 | 1011 | NULL |
6 | 2 | 測試2__3 | 1011 | NULL |
7 | 3 | 測試3__1 | 1011 | NULL |
8 | 3 | 測試3__2 | 1011 | NULL |
9 | 3 | 測試3__3 | 1011 | NULL |
10 | 4 | 測試4__1 | 1011 | NULL |
11 | 4 | 測試4__2 | 1011 | NULL |
12 | 4 | 測試4__3 | 1011 | NULL |
這是我想要實現但不確定如何將其轉換為 mysql 或 php 腳本的查詢:
如果entry.early_finish
為 1(優先級)或 0(優先級較低,但在沒有 1 時將被選中),則從entries
中隨機選擇(1) parent_id
,然后在選中時添加一個值來進行戰斗。
然后;
如果entry.early_finish
為 1(優先級)或 0(優先級較低但將在沒有剩余 1 時選擇) entry.group_id
不等於第一個查詢,則從entries
中隨機選擇(1) parent_id
然后添加一個值來打如果被選中。
這樣,將選擇 2 個隨機行,這將是匹配項。
希望這里有人能救我。 謝謝!
SELECT
es.id,
es.parent_id,
e.entry_name as parent_name,
es.entries_name,
es.entries_weight,
es.fought
FROM
entries es
LEFT JOIN
entry e
ON
es.parent_id = e.id
WHERE
e.early_finish = (
CASE
WHEN (SELECT count(id) FROM entry WHERE early_finish=1) > 0 THEN 1
ELSE 0
END
)
AND
es.fought = 0
ORDER BY RAND()
LIMIT 1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.