私はSQLを使用したデータベースがあった場合ちょっと質問は、:SQLのレコード間で共通の値を見つける方法は?
Names: Max¦ John¦ May¦ Olivia
Numbers: 3, 7, 9¦ 1, 3, 4¦ 8, 5, 3¦ 5, 7, 1
を数5のようにどのように多くの人々を参照して、彼らを表示するには、「番号」欄をチェックするためにSQLを使用した方法はあります番号のような名前をユーザに提示する。ここで
私はSQLを使用したデータベースがあった場合ちょっと質問は、:SQLのレコード間で共通の値を見つける方法は?
Names: Max¦ John¦ May¦ Olivia
Numbers: 3, 7, 9¦ 1, 3, 4¦ 8, 5, 3¦ 5, 7, 1
を数5のようにどのように多くの人々を参照して、彼らを表示するには、「番号」欄をチェックするためにSQLを使用した方法はあります番号のような名前をユーザに提示する。ここで
まあ、しかし、あなたはまだそれに移動したい場合は、ここでそれを行う方法です:その代わり、次のようなテーブルが欲しい
SELECT *
FROM YourTableName
WHERE Numbers LIKE '%5%';
の検索結果を:
DECLARE @Names TABLE (ID INT IDENTITY(1,1), Name VARCHAR(30));
DECLARE @Numbers TABLE (Name INT, Number INT);
INSERT INTO @Names VALUES
('Max'),
('John'),
('May'),
('Olivia');
INSERT INTO @Numbers VALUES
(1, 3),
(1, 7),
(1, 9),
(2, 1),
(2, 3),
(2, 4),
(3, 8),
(3, 5),
(3, 3),
(4, 5),
(4, 7),
(4, 1);
/**/
SELECT N.Name, NM.Number
FROM @Names N INNER JOIN @Numbers NM ON N.ID = NM.Name
WHERE NM.Number = 5;
01:
+--------+---------+
| Name | Numbers |
+--------+---------+
| May | 8, 5, 3 |
| Olivia | 5, 7, 1 |
+--------+---------+
しかし、私は次のように気にいらにそのデザインを変更するrecommand
結果:ここで
+--------+--------+
| Name | Number |
+--------+--------+
| May | 5 |
| Olivia | 5 |
+--------+--------+
が良いarticleで開始することもあります。
は、文字列に数値を格納するためではないいくつかの理由です:
あなただけの文字列に「5」を検索したい場合は、like
を使用することができます。
where numbers like '%5%'
それは "に「5」と一致しますので、これはおそらく、あなたがやりたいことはありません15 "。これは修正できますが、この方法でデータを格納しない理由を理解してください。あなたが悪いデータベース設計を持って最初に、
Name Number
Max 3
Max 7
Max 9
John 1
. . .
は、これはデータベースです: 名前:私はするために必要なもの5、7、1 :数 最大:3、7、9 ジョン:1、3、4 月:8、5、3 オリビア知っているのはどのようにレコード間の共通数を見つけるのですか?私はそれを前に明らかにしなかったなら、すみません。 –
*数字のリストをカンマ区切りの文字列として保存しないでください。そのようにデータを格納するのは間違いです。データベースを修正してください。 –
はい、あります。より詳細な回答を得るには、あなたの質問を編集し、名前と番号の関係とどの人がどの番号を好むかを指定する必要があります。 – jhenderson2099