簡體   English   中英

根據條件獲取一行

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

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