関連する変数の条件を変更し、mysql でデータを 1 行でクエリおよび表示する方法の概要

不言
リリース: 2018-10-20 17:10:09
転載
2596 人が閲覧しました

この記事では、mysql で関連する変数の条件を変更し、データを 1 行で表示する方法を紹介します (コード付き)。必要な方は参考にしていただければ幸いです。 。

1 対多のデー​​タは 1 行に表示されます

GROUP_CONCAT(expr)

1 関係するテーブルの関係: Teacher テーブル、Teacher_subject_rel テーブル。 (教師テーブル 教えられる科目のテーブル)、科目テーブル
2、ビジネス シナリオ: すべての教師の番号 (Teacher_no) と科目名 (Subject_name) を取得する必要があります。   教師テーブル (Teacher) と主題 (Teacher_subject_rel) は 1 対多の関係にあり、同じ教師の複数のデータがクエリに表示されることがよくあります。各教師のデータ件名を 1 つの

1 に結合したいと考えています。基本的な構文

group_concat( [DISTINCT] 接続するフィールド [並べ替えフィールド ASC/DESC] [区切り文字 '区切り記号'] )

2. 例

SELECT
    t.teacher_id as '教师id',
    t.teacher_no '教师编号',
 (
    SELECT
        GROUP_CONCAT(s.subject_name)
    FROM
        teacher_subject_rel tsr
    LEFT JOIN `subject` s ON tsr.subject_id = s.subject_id
    WHERE
        t.teacher_id = tsr.teacher_id
) AS '学科'
FROM
    teacher t
ログイン後にコピー

関連する変数の条件を変更し、mysql でデータを 1 行でクエリおよび表示する方法の概要

#サブクエリ、クエリ一時テーブル、EXISTS ##例

SELECT
    *
FROM
    (
        SELECT
            o.id,
            o.student_intention_id,
            s. NAME,
            s.area_id,
            a.area_name,
            s.exam_year,
            o. STATUS,
            CASE o. STATUS
        WHEN '1' THEN
            '待提交'
        WHEN '2' THEN
            '待指派'
        WHEN '3' THEN
            '已完成'
        WHEN '4' THEN
            '处理中'
        END statusName,
        CASE o.emergency_degree
    WHEN '1' THEN
        '正常'
    WHEN '2' THEN
        '紧急'
    WHEN '3' THEN
        '非常紧急'
    END emergencyDegreeName,
    o.emergency_degree,
    o.update_time,
    (
        SELECT
            first_lesson_time
        FROM
            jx_strategy
        WHERE
            jx_lesson_plan_order_id = o.id
        AND STATUS IN (2, 7)
        AND first_lesson_time > now()
        ORDER BY
            first_lesson_time ASC
        LIMIT 1
    ) AS first_time,
    (
        SELECT
            deal_user_id
        FROM
            jx_strategy
        WHERE
            jx_lesson_plan_order_id = o.id
        AND STATUS  7
        AND deal_user_id  0
        ORDER BY
            id DESC
        LIMIT 1
    ) AS deal_user_id
FROM
    jx_lesson_plan_order o
LEFT JOIN student s ON s.student_intention_id = o.student_intention_id
LEFT JOIN area a ON s.area_id = a.id
WHERE
    o. STATUS  1
AND s.phone = '18501665888'
AND o.emergency_degree = 1
AND o. STATUS = 2
AND s.exam_year = '2015'
AND o.update_time >= '2018-08-14 20:28:55'
AND o.update_time = '2018-08-17 00:00:00'
AND a.first_time <p></p>update 関連する変数条件の変更<p><strong></strong>1. 関係するテーブル関係: user_info テーブルの id_number (ID カード番号) Teacher テーブルの生年月日フィールド、関連付け関係 usrer_id = Teacher_id</p>2。 ビジネス シナリオ: ユーザーの ID カードの生年月日を取得し、生年月日フィールド <p></p><pre class="brush:php;toolbar:false">UPDATE teacher t INNER JOIN (

SELECT t.teacher_id, t.birth, u.id_number, CONCAT(SUBSTRING(u.id_number, 7, 4), '-', SUBSTRING(u.id_number, 11, 2), '-', SUBSTRING(u.id_number, 13, 2)) as birth1, u.reg_date, t.exit_time from teacher t
INNER JOIN user_info u ON u.user_id = t.teacher_id

) info on info.teacher_id = t.teacher_id
SET t.birth = info.birth1
WHERE info.reg_date > '2018-08-20 00:00:00' and info.id_number is not NULL and (info.birth is NULL or t.birth = '') and t.is_train = 1
ログイン後にコピー


以上が関連する変数の条件を変更し、mysql でデータを 1 行でクエリおよび表示する方法の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!