WHERE条件来自列表

时间:2017-04-20 10:36:28

标签: mysql sql loops mariadb heidisql

我有一个mysql数据库表,其中包含许多书目记录。它的格式有点像:

field content |field title |barcode
Black Beauty  |Title       |9781235842
James Joyce   |Author      |9781452585

有几十种可能的字段标题。

每条记录有效地分布在多个行上,记录是共享条形码的组合行。

我想看看哪些项目有短记录。

我有一个特定条形码的工作查询:

select barcode, sum(length(field_content)) from central where barcode = 420908032337 ;

我有一个1.3k的可疑条形码列表。有没有办法通过循环遍历此列表来运行SQL查询?

我在工作机器上可以访问HeidiSQL,git bash [包括grep等],但是无法安装php,ruby等脚本。

2 个答案:

答案 0 :(得分:2)

无需循环使用IN运算符并提供所有条形码值

where barcode in (1.3K list of barcodes)

您可以通过多种方式使用脚本语言或任何方式形成该列表。否则,创建一个temporary表。填写条形码列表并从该临时表中选择

where barcode in (select distinct barcodes from my_temp_table)

答案 1 :(得分:1)

select barcode,
       sum(length(field_content)) AS rec_len
    from central
    GROUP BY barcode
    ORDER BY rec_len  -- display the shortest first
    LIMIT 50;   -- if you want to see just 50