簡體   English   中英

Mysql select 具有相同值列的行

[英]Mysql select row with same value column

我有一個學生成績表,有 4 個問題答案分別標記為 1、-1 和 0 表示正確、不正確和未參加。 我在下面添加一個表結構。 我正在尋找一個 MySQL 查詢來根據他們得到多少 1 將另一列更新為選中或未選中。 因此,如果我的情況是一名學生至少獲得了 1 個 got will select,那么我可以編寫UPDATE table SET selected = 1 WHERE total_mark > 0 (至少一個正確的分數將大於 0)。

不,我需要至少選擇 2 個或 3 個,我將如何編寫更新查詢。

在此處輸入圖像描述

最好的方法是通過創建一個 USER_ANSWERS 表來改進您的關系 model,然后您可以簡單地計算分數 = 1 的答案。這樣您就不會依賴於調查中的問題數量。

如果這不是您想做的事情,則此查詢可以解決問題:

UPDATE TABLE SET selected = 1 WHERE GREATEST(0,m1) + GREATEST(0,m2) + GREATEST(0,m3) + GREATEST(0,m4) > 0

如果您希望selected列的至少 2 11 ,則:

UPDATE tablename 
SET selected = (m1 = 1) + (m2 = 1) + (m3 = 1) + (m4 = 1) >= 2

boolean 表達式mx = 1中的每一個對於truefalse的計算結果為10

請參閱演示
結果:

> id | name  | m1 | m2 | m3 | m4 | selected
> -: | :---- | -: | -: | -: | -: | -------:
>  1 | user1 |  1 |  1 |  1 |  1 |        1
>  2 | user2 |  1 | -1 | -1 | -1 |        0
>  3 | user3 |  1 |  1 |  0 |  0 |        1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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